Es scheint mir, dass Sie dasselbe in einer SQL-Abfrage tun können, indem Sie entweder NOT EXISTS, NOT IN oder LEFT JOIN WHERE IS NULL verwenden. Beispielsweise:
SELECT a FROM table1 WHERE a NOT IN (SELECT a FROM table2)
SELECT a FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.a = table2.a)
SELECT a FROM table1 LEFT JOIN table2 ON table1.a = table2.a WHERE table1.a IS NULL
Ich bin nicht sicher, ob ich die gesamte Syntax richtig verstanden habe, aber dies sind die allgemeinen Techniken, die ich gesehen habe. Warum sollte ich mich dafür entscheiden, eins über das andere zu verwenden? Unterscheidet sich die Leistung ...? Welches davon ist das schnellste / effizienteste? (Wenn es von der Implementierung abhängt, wann würde ich jeden verwenden?)
EXISTSKlausel zurückgeben. Sie können zurückkehren *, NULLoder was auch immer: alles wird optimiert entfernt werden.
SELECTund zu setzen FROM. Und *ist einfach einfacher zu tippen. Ja, SQLhat Ähnlichkeit mit einer natürlichen Sprache, aber sie wird von einer Maschine, einer programmierten Maschine, analysiert und ausgeführt. Es ist nicht so, dass es jemals plötzlich in Ihre Kabine eindringen wird und " EXISTSHör auf, nach den zusätzlichen Feldern in einer Abfrage zu fragen, weil ich es satt habe, sie zu analysieren und sie dann wegzuwerfen!". Mit einem Computer ist das wirklich in Ordnung.