SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
F :Was passiert hier?
A :Konzeptionell wählen wir alle Zeilen aus table1
aus und für jede Zeile versuchen wir, eine Zeile in table2
zu finden mit demselben Wert für name
Säule. Wenn es keine solche Zeile gibt, verlassen wir einfach die table2
Teil unseres Ergebnisses für diese Zeile leer. Dann schränken wir unsere Auswahl ein, indem wir nur die Zeilen im Ergebnis auswählen, in denen die übereinstimmende Zeile nicht vorhanden ist. Schließlich ignorieren wir alle Felder aus unserem Ergebnis mit Ausnahme von name
Spalte (diejenige, von der wir sicher sind, dass sie existiert, aus table1
).
Auch wenn es nicht in allen Fällen die leistungsfähigste Methode ist, sollte es in praktisch jeder Datenbank-Engine funktionieren, die jemals versucht, ANSI 92 SQL
zu implementieren