Die subtilen Unterschiede zwischen LEFT JOIN und RIGHT JOIN verstehen
Während LEFT JOIN
und RIGHT JOIN
bei Verwendung derselben Join-Bedingung austauschbar erscheinen, unterscheidet sich ihr Verhalten je nach Reihenfolge der Tabellen in der Abfrage erheblich. Lassen Sie uns dies anhand eines Beispiels untersuchen.
Betrachten Sie zwei Tabellen:
<code class="language-sql">CREATE TABLE Table1 (id INT, Name VARCHAR(10)); CREATE TABLE Table2 (id INT, Name VARCHAR(10));</code>
Mit folgenden Daten gefüllt:
Table1 | Table2 | |
---|---|---|
Id | Name | Id |
1 | A | 1 |
2 | B | 2 |
3 |
Beim Verbinden mit Table1.id = Table2.id
sind die Ergebnisse von LEFT JOIN
und RIGHT JOIN
tatsächlich identisch:
<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>
Das liegt daran, dass die Join-Bedingung symmetrisch ist. Die Illusion der Austauschbarkeit bricht jedoch zusammen, wenn die Tischreihenfolge umgekehrt wird.
Der Einfluss der Tischbestellung
Beobachten Sie die folgende Abfrage:
<code class="language-sql">SELECT * FROM Table2 LEFT JOIN Table1 ON Table1.id = Table2.id;</code>
Dies gibt alle Zeilen von Table2
zurück, unabhängig von einer Übereinstimmung in Table1
. Die Ergebnismenge wäre:
Table2 | Table1 | |
---|---|---|
Id | Name | Id |
1 | A | 1 |
2 | B | 2 |
3 | C |
Umgekehrt ein RIGHT JOIN
mit umgekehrter Tabellenreihenfolge:
<code class="language-sql">SELECT * FROM Table2 RIGHT JOIN Table1 ON Table1.id = Table2.id;</code>
Dies umfasst nur Zeilen aus Table2
, die eine passende Zeile in Table1
haben. Die Zeile mit id = 3
in Table2
würde ausgeschlossen.
Auch wenn die Join-Bedingung symmetrisch erscheinen mag, bestimmt die Wahl zwischen LEFT JOIN
und RIGHT JOIN
sowie die Reihenfolge der Tabellen grundsätzlich, welche Tabellenzeilen garantiert in die endgültige Ergebnismenge aufgenommen werden, selbst wenn dies der Fall ist Keine Übereinstimmung in der anderen Tabelle. Überlegen Sie sich immer sorgfältig die Tischreihenfolge, um sicherzustellen, dass Sie die erwarteten Ergebnisse erzielen.
Das obige ist der detaillierte Inhalt vonWann sind LEFT JOIN und RIGHT JOIN wirklich austauschbar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!