Das Schlüsselwort OUTER JOIN wird in MySQL verwendet, um Datensätze aus zwei Tabellen abzurufen, einschließlich der Datensätze, die keine übereinstimmenden Werte in den Bezugstabellen haben. Sie stellt sicher, dass alle Datensätze aus einer Tabelle in die Ergebnisse aufgenommen werden, und wenn keine Übereinstimmungen gefunden werden, werden NULLs in die Spalten der jeweiligen Tabelle eingetragen.
Verwendung
OUTER JOIN wird verwendet, wenn du alle Zeilen aus einer oder beiden Tabellen einbeziehen willst, unabhängig davon, ob es in der anderen Tabelle eine Übereinstimmung gibt. Es gibt zwei Haupttypen: LEFT OUTER JOIN (oder einfach LEFT JOIN) und RIGHT OUTER JOIN (oder einfach RIGHT JOIN).
SELECT columns
FROM table1
LEFT|RIGHTOUTERJOIN table2
ON table1.common_column = table2.common_column;Bereitgestellt von
In dieser Syntax bestimmt das Schlüsselwort LEFT|RIGHT OUTER JOIN, welche Zeilen der Tabelle vollständig in der Ergebnismenge erhalten bleiben.
Hinweis zu FULL OUTER JOIN
MySQL unterstützt FULL OUTER JOIN nicht direkt. Du kannst jedoch ähnliche Ergebnisse erzielen, indem du eine Kombination aus LEFT JOIN und RIGHT JOIN mit einem UNION verwendest.
SELECT columns
FROM table1
LEFTJOIN table2 ON table1.common_column = table2.common_column
UNIONSELECT columns
FROM table1
RIGHTJOIN table2 ON table1.common_column = table2.common_column;Bereitgestellt von
Beispiele
1. Basic LEFT OUTER JOIN
SELECT customers.customer_id, orders.order_id
FROM customers
LEFTOUTERJOIN orders ON customers.customer_id = orders.customer_id;Bereitgestellt von
Diese Abfrage ruft alle Kunden und ihre Bestellungen ab, falls vorhanden. Kunden ohne Bestellungen erscheinen weiterhin im Ergebnis mit NULL in den Bestellspalten.
2. RECHTE ÄUSSERE VERBINDUNG
SELECT products.product_id, orders.order_id
FROM products
RIGHTOUTERJOIN orders ON products.product_id = orders.product_id;Bereitgestellt von
Hier werden alle Bestellungen aufgelistet, auch die, für die es keinen entsprechenden Produkteintrag gibt, indem du NULL für Produktdetails ausfüllst.
3. Kombinieren von LEFT JOIN mit WHERE-Klausel
SELECT employees.employee_id, departments.department_name
FROM employees
LEFTJOIN departments ON employees.department_id = departments.department_id
WHERE departments.department_name ISNULL;Bereitgestellt von
Diese Abfrage findet Mitarbeiter, die keiner Abteilung zugewiesen sind, indem sie alle Mitarbeiter auflistet und diejenigen mit NULL Abteilungsnamen filtert.
Tipps und bewährte Praktiken
Wähle die richtige Verbindungsart. Verwende LEFT JOIN, wenn du alle Datensätze aus der ersten Tabelle brauchst, und RIGHT JOIN, wenn du alle Datensätze aus der zweiten Tabelle brauchst.
Behalte die Leistung im Auge.OUTER JOIN Operationen können die Leistung beeinträchtigen; stelle sicher, dass Indizes für Join-Spalten verwendet werden. Die Analyse von Abfrageausführungsplänen kann helfen, die Leistung zu optimieren.
Achte auf NULLs. Überlege, wie deine Anwendung oder nachfolgende Abfragen mit NULL-Werten in der Ergebnismenge umgehen werden. Verwende Funktionen wie IFNULL() oder COALESCE(), um NULL durch Standardwerte zu ersetzen.
Verwende WO mit Vorsicht. Wenn du mit WHERE filterst, achte darauf, dass es nicht versehentlich die Wirkung von OUTER JOIN aufhebt.
Das Schlüsselwort
OUTER JOINwird in MySQL verwendet, um Datensätze aus zwei Tabellen abzurufen, einschließlich der Datensätze, die keine übereinstimmenden Werte in den Bezugstabellen haben. Sie stellt sicher, dass alle Datensätze aus einer Tabelle in die Ergebnisse aufgenommen werden, und wenn keine Übereinstimmungen gefunden werden, werden NULLs in die Spalten der jeweiligen Tabelle eingetragen.Verwendung
OUTER JOINwird verwendet, wenn du alle Zeilen aus einer oder beiden Tabellen einbeziehen willst, unabhängig davon, ob es in der anderen Tabelle eine Übereinstimmung gibt. Es gibt zwei Haupttypen:LEFT OUTER JOIN(oder einfachLEFT JOIN) undRIGHT OUTER JOIN(oder einfachRIGHT JOIN).In dieser Syntax bestimmt das Schlüsselwort
LEFT|RIGHT OUTER JOIN, welche Zeilen der Tabelle vollständig in der Ergebnismenge erhalten bleiben.Hinweis zu FULL OUTER JOIN
MySQL unterstützt
FULL OUTER JOINnicht direkt. Du kannst jedoch ähnliche Ergebnisse erzielen, indem du eine Kombination ausLEFT JOINundRIGHT JOINmit einemUNIONverwendest.Beispiele
1. Basic LEFT OUTER JOIN
Diese Abfrage ruft alle Kunden und ihre Bestellungen ab, falls vorhanden. Kunden ohne Bestellungen erscheinen weiterhin im Ergebnis mit
NULLin den Bestellspalten.2. RECHTE ÄUSSERE VERBINDUNG
Hier werden alle Bestellungen aufgelistet, auch die, für die es keinen entsprechenden Produkteintrag gibt, indem du
NULLfür Produktdetails ausfüllst.3. Kombinieren von LEFT JOIN mit WHERE-Klausel
Diese Abfrage findet Mitarbeiter, die keiner Abteilung zugewiesen sind, indem sie alle Mitarbeiter auflistet und diejenigen mit
NULLAbteilungsnamen filtert.Tipps und bewährte Praktiken
- Wähle die richtige Verbindungsart. Verwende
- Behalte die Leistung im Auge.
- Achte auf NULLs. Überlege, wie deine Anwendung oder nachfolgende Abfragen mit NULL-Werten in der Ergebnismenge umgehen werden. Verwende Funktionen wie
- Verwende WO mit Vorsicht. Wenn du mit
```LEFT JOIN, wenn du alle Datensätze aus der ersten Tabelle brauchst, undRIGHT JOIN, wenn du alle Datensätze aus der zweiten Tabelle brauchst.OUTER JOINOperationen können die Leistung beeinträchtigen; stelle sicher, dass Indizes für Join-Spalten verwendet werden. Die Analyse von Abfrageausführungsplänen kann helfen, die Leistung zu optimieren.IFNULL()oderCOALESCE(), umNULLdurch Standardwerte zu ersetzen.WHEREfilterst, achte darauf, dass es nicht versehentlich die Wirkung vonOUTER JOINaufhebt.