Heim >Datenbank >MySQL-Tutorial >LEFT JOIN vs. RIGHT JOIN: Wann führen diese SQL-Joins zu unterschiedlichen Ergebnissen?

LEFT JOIN vs. RIGHT JOIN: Wann führen diese SQL-Joins zu unterschiedlichen Ergebnissen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-14 15:56:46472Durchsuche

LEFT JOIN vs. RIGHT JOIN: When Do These SQL Joins Produce Different Results?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn