Il me semble que vous pouvez faire la même chose dans une requête SQL en utilisant soit NOT EXISTS, NOT IN ou LEFT JOIN WHERE IS NULL. Par exemple:
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
Je ne suis pas sûr que toute la syntaxe soit correcte, mais ce sont les techniques générales que j'ai vues. Pourquoi choisirais-je d'utiliser l'un plutôt que l'autre? Les performances diffèrent-elles ...? Lequel de ceux-ci est le plus rapide / le plus efficace? (Si cela dépend de la mise en œuvre, quand utiliserais-je chacun d'eux?)
EXISTS
clause. Vous pouvez revenir *
, NULL
ou autre: tout cela sera optimisé.
SELECT
et FROM
. Et *
c'est juste plus facile à taper. Oui, SQL
cela ressemble à un langage naturel, mais il est analysé et exécuté par une machine, une machine programmée. Ce n'est pas qu'il va soudainement s'introduire dans votre armoire et crier "Arrêtez de demander les champs supplémentaires dans une EXISTS
requête parce que j'en ai marre de les analyser et de les jeter!". C'est vraiment OK avec un ordinateur.