LEFT JOIN und RIGHT JOIN in SQL verstehen: die Feinheiten von Tabellenbeziehungen
Der „JOIN“-Operator von SQL bietet einen leistungsstarken Mechanismus beim Zusammenführen von Daten aus mehreren Tabellen. „LEFT JOIN“ und „RIGHT JOIN“ sind zwei Variationen der JOIN-Syntax. Während es intuitiv erscheint, dass diese beiden Befehle das gleiche Ergebnis liefern sollten, offenbart ein genauerer Blick subtile Unterschiede zwischen ihnen.
Lassen Sie uns diesen Unterschied anhand von zwei Beispieltabellen veranschaulichen:
<code class="language-sql">CREATE TABLE Table1 (id INT, Name VARCHAR(10)); CREATE TABLE Table2 (id INT, Name VARCHAR(10));</code>
Jetzt füllen wir diese Tabellen mit Daten:
Tabelle1
Id | Name |
---|---|
1 | A |
2 | B |
Tabelle2
Id | Name |
---|---|
1 | A |
2 | B |
3 | C |
Wenn wir die folgende SQL-Anweisung ausführen:
<code class="language-sql">SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.id = Table2.id; SELECT * FROM Table2 RIGHT JOIN Table1 ON Table1.id = Table2.id;</code>
Wir erhalten die gleichen Ergebnisse, da beide Abfragen einen „LEFT JOIN“ ausführen, der den Zeilen in der linken Tabelle (Tabelle 1) Priorität einräumt. Daher werden alle Zeilen aus Tabelle1 in die Ausgabe einbezogen, während Zeilen aus Tabelle2 nur dann verkettet werden, wenn sie übereinstimmende IDs in Tabelle1 haben.
Lassen Sie uns nun die dritte Variante erkunden: „Table2 LEFT JOIN Table1“. Indem wir die Reihenfolge der Tabellen in der JOIN-Anweisung vertauschen, führen wir einen „RIGHT JOIN“ durch, der den Zeilen in der rechten Tabelle (Tabelle2) Priorität einräumt.
<code class="language-sql">SELECT * FROM Table2 LEFT JOIN Table1 ON Table1.id = Table2.id;</code>
Diese Abfrage gibt alle Zeilen in Tabelle2 zurück, auch Zeilen mit der ID 3 und keiner passenden ID in Tabelle1. Darüber hinaus werden auch alle übereinstimmenden Zeilen in Tabelle1 einbezogen.
Also sind „LEFT JOIN“ und „RIGHT JOIN“ austauschbar, wenn die linke Tabelle alle übereinstimmenden IDs enthält. Wenn die rechte Tabelle jedoch nicht übereinstimmende IDs enthält, sind ihre Ergebnisse unterschiedlich. „LEFT JOIN“ priorisiert die linke Tabelle und „RIGHT JOIN“ priorisiert die rechte Tabelle und stellt so sicher, dass alle Zeilen aus der priorisierten Tabelle in der Ausgabe enthalten sind.
Das obige ist der detaillierte Inhalt vonLEFT JOIN vs. RIGHT JOIN: Wann führen diese SQL-Joins zu unterschiedlichen Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!