SELECT attribut1, attribut2, ... FROM table1
WHERE
attribut1 NOT IN (SELECT attribut1 FROM table2) ;
SELECT attribut1, attribut2, ... FROM table1
WHERE NOT EXISTS (SELECT
* FROM table2 WHERE
table1.attribut1=table2.attribut1) ;
SELECT attribut1, attribut2, ... FROM table1
WHERE
attribut1 <> ALL (SELECT attribut1 FROM table2) ;
SELECT attribut1, attribut2, ... FROM table1
EXCEPT
SELECT
attribut1, attribut2, ... FROM table2
;
SELECT table1.attribut1, table1.attribut2,...
FROM table1 LEFT JOIN table2 ON table1.attribut1 =
table2.attribut1
WHERE table2.attribut1 IS NULL ;
SELECT n°enseignant, NomEnseignant FROM E1
WHERE n°enseignant NOT IN (SELECT n°enseignant FROM E2) ;
ou
SELECT n°enseignant, NomEnseignant FROM E1
EXCEPT
SELECT n°enseignant, NomEnseignant FROM E2 ;
ou encore
SELECT E1.n°enseignant, E1.NomEnseignant
FROM E1 LEFT JOIN E2 ON E1.n°enseignant = E2.n°enseignant
WHERE E2.n°enseignant IS NULL ;
Pour mieux comprendre cette dernière version, voici le résultat renvoyé par la jointure externe gauche entre E1 et E2 :
E1.n°enseignant | E1.NomEnseignant | E2.n°enseignant | E2.NomEnseignant |
---|---|---|---|
1 | DUPONT | 1 | DUPONT |
3 | DURAND | NULL | NULL |
4 | MARTIN | 4 | MARTIN |
5 | BERTRAND | NULL | NULL |