SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
Q :Que se passe-t-il ici ?
A :Conceptuellement, nous sélectionnons toutes les lignes de table1
et pour chaque ligne nous essayons de trouver une ligne dans table2
avec la même valeur pour le name
colonne. S'il n'y a pas une telle ligne, nous laissons simplement la table2
partie de notre résultat vide pour cette ligne. Ensuite, nous restreignons notre sélection en sélectionnant uniquement les lignes du résultat où la ligne correspondante n'existe pas. Enfin, nous ignorons tous les champs de notre résultat à l'exception du name
colonne (celle dont nous sommes sûrs qu'elle existe, de table1
).
Bien que ce ne soit pas la méthode la plus performante possible dans tous les cas, elle devrait fonctionner dans pratiquement tous les moteurs de base de données qui tentent d'implémenter ANSI 92 SQL