English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial lernen Sie, wie Sie mit SQL Left Join Daten aus zwei Tabellen abrufen.
Eine LEFT JOIN-Anweisung gibt alle Zeilen der linken Tabelle sowie die Zeilen der rechten Tabelle zurück, die die Verknüpfungserfordernisse erfüllen. Die linke Verknüpfung isteine Art externer Verknüpfung,daher auch bekannt alsleft outer join.Andere Varianten der externen Verknüpfung sindRechte VerknüpfungundVollständige Verknüpfung.
Das folgende Venn-Diagramm zeigt die Funktionsweise der linken Verknüpfung.
Hinweis:Eine externe Verknüpfung ist eine Verknüpfung, die Zeilen in der Ergebnismenge enthält, selbst wenn die Zeilen in den beiden zu verknüpfenden Tabellen möglicherweise nicht übereinstimmen.
Um dies klarer zu verstehen, lassen Sie uns einen Blick auf untenemployeesunddepartmentsTabelle.
+--------+--------------+------------+---------+ | emp_id | emp_name | hire_date | dept_id | +--------+--------------+------------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 4 | | 2 | Tony Montana | 2002-07-15 | 1 | | 3 | Sarah Connor | 2005-10-18 | 5 | | 4 | Rick Deckard | 2007-01-03 | 3 | | 5 | Martin Blank | 2008-06-24 | NULL | +--------+--------------+------------+---------+ | +---------+------------------+ | dept_id | dept_name | +---------+------------------+ | 1 | Administration | | 2 | Customer Service | | 3 | Finance | | 4 | Human Resources | | 5 | Sales | +---------+------------------+ | |
Tabelle: employees | Tabelle: departments |
Jetzt,angenommen, Sie möchten alle IDs, Namen und Beschäftigungstermine der Mitarbeiter sowie ihre Abteilungsbezeichnungen abrufen, unabhängig davon, ob sie einer Abteilung zugewiesen sind oder nicht. Um eine solche Ergebnismenge zu erhalten, müssen wir eine linke Verknüpfung anwenden.
Der folgende Befehl verwendet gemeinsame Felder, umMitarbeiter(employees)unddepartments(Abteilungen)Tabellen miteinander verbunden, um die ID, den Namen, das Beschäftigungsdatum und den Abteilungsnamen der Mitarbeiter abzurufendept_id。Es beinhaltet auch Mitarbeiter, die nicht einer Abteilung zugewiesen wurden.
SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name FROM employees AS t1 LEFT JOIN departments AS t2 ON t1.dept_id = t2.dept_id ORDER BY emp_id;
Hinweis:Bei der Verknüpfungssuche ist die linke Tabelle die Tabelle, die am linksten im JOIN-Ausdruck auftaucht, und die rechte Tabelle ist die Tabelle, die am rechten Ende des Ausdrucks auftaucht.
Nach der Ausführung des obigen Befehls erhalten Sie die folgenden Ausgaben:
+--------+--------------+------------+-----------------+ | emp_id | emp_name | hire_date | dept_name | +--------+--------------+------------+-----------------+ | 1 | Ethan Hunt | 2001-05-01 | Human Resources | | 2 | Tony Montana | 2002-07-15 | Administration | | 3 | Sarah Connor | 2005-10-18 | Sales | | 4 | Rick Deckard | 2007-01-03 | Finance | | 5 | Martin Blank | 2008-06-24 | NULL | +--------+--------------+------------+-----------------+
wie Sie klar sehen können, umfasst die linke VerknüpfungMitarbeiterin der (employees)-Tabelle alle Zeilen des Ergebnisses, unabhängig davon,departmentsin der Tabelledept_idSpaltenübereinstimmung.
Hinweis:Wenn es in der linken Tabelle eine Zeile gibt, aber keine Übereinstimmung in der rechten Tabelle, enthalten die verknüpften Ergebnisse Zeilen mit NULL für alle Spaltenwerte aus der rechten Tabelle.