Suchen nicht vorhandener Daten mit LEFT JOIN
In SQL kann es erforderlich sein, zwei Tabellen zu vergleichen und Daten zu identifizieren, die in einer Tabelle vorhanden sind aber nicht das andere. Dieses Szenario tritt häufig bei der Suche nach fehlenden Datensätzen auf.
Beachten Sie die folgenden Tabellen:
TABELLE1
id | name | address |
---|---|---|
1 | mm | 123 |
2 | nn | 143 |
TABELLE2
name | age |
---|---|
mm | 6 |
oo | 9 |
Ziel ist es, durch Vergleich die nicht vorhandenen Namen in TABELLE1 zu finden es mit TABELLE2. In diesem Fall ist die zweite Zeile in TABELLE1 mit dem Namen „nn“ in TABELLE2 nicht vorhanden.
Ein erster Versuch mit einem INNER JOIN:
SELECT w.* FROM TABLE1 w INNER JOIN TABLE2 v ON w.name <> v.name
wird das gewünschte nicht abrufen Ergebnis, weil INNER JOIN nur Zeilen zurückgibt, bei denen es eine Übereinstimmung in beiden Tabellen gibt.
Die Lösung liegt in der Verwendung eines LEFT JOIN stattdessen:
SELECT w.* FROM TABLE1 w LEFT JOIN TABLE2 v ON w.name = v.name WHERE ISNULL(v.name);
Der LEFT JOIN führt einen Outer Join durch, was bedeutet, dass er alle Zeilen aus der linken Tabelle (TABELLE1) zurückgibt, unabhängig davon, ob es eine passende Zeile in der rechten Tabelle (TABELLE2) gibt. Die ISNULL(v.name)-Bedingung sucht nach Zeilen in TABELLE1, in denen das entsprechende Namensfeld in TABELLE2 null ist, was darauf hinweist, dass der Name in TABELLE2 nicht vorhanden ist.
Die Ausgabe lautet:
id | name | address |
---|---|---|
2 | nn | 143 |
Diese Abfrage ruft erfolgreich die Zeile aus TABELLE1 mit dem nicht vorhandenen Namen „nn“ ab.
Das obige ist der detaillierte Inhalt vonWie kann ein LEFT JOIN in SQL Daten identifizieren, die in einer Tabelle vorhanden sind, in einer anderen jedoch nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!