Partager via


Réalisation de semi-jointures avec EXCEPT et INTERSECT

Les opérateurs EXCEPT et INTERSECT permettent de comparer les résultats de plusieurs instructions SELECT et de retourner des valeurs distinctes. L'opérateur EXCEPT retourne toute valeur distincte provenant de la requête du côté gauche de l'opérateur EXCEPT qui n'est pas également retournée par la requête du côté droit. INTERSECT retourne toute valeur distincte retournée par la requête à la fois des côtés gauche et droit de l'opérateur INTERSECT. Les ensembles de résultats comparés à l'aide d'EXCEPT ou d'INTERSECT doivent tous posséder la même structure. Ils doivent posséder le même nombre de colonnes et les types de données des colonnes correspondantes de l'ensemble de résultats doivent être compatibles. Pour plus d'informations, consultez EXCEPT et INTERSECT (Transact-SQL).

Prenons l'exemple des tables TableA, TableB et TableC contenant les données suivantes dans leur colonne col1int respective.

TableA (col1 int) TableB (col1 int) TableC (col1 int)

NULL

NULL

2

NULL

1

2

NULL

3

2

1

4

4

2

4

4

2

2

3

4

4

À l'aide d'EXCEPT, la requête suivante retourne toute valeur distincte provenant de la requête du côté gauche de l'opérande EXCEPT qui ne se trouve pas également dans la requête de droite.

SELECT * FROM TableA EXCEPT SELECT * FROM TableB

Voici les résultats :

Col1       
----------- 
2

(1 row(s) affected)

À l'aide d'INTERSECT, cette requête retourne toute valeur distincte retournée par la requête à la fois des côtés gauche et droit de l'opérateur INTERSECT.

SELECT * FROM TableA INTERSECT SELECT * FROM TableB

Voici les résultats :

Col1       
----------- 
NULL
1
3
4

(4 row(s) affected)

L'opérateur INTERSECT prévaut sur EXCEPT. Par exemple, la requête suivante utilise les deux opérateurs :

SELECT * FROM TableA EXCEPT SELECT * FROM TableB INTERSECT SELECT * FROM TableC

Voici les résultats :

Col1       
----------- 
NULL
1
2
3

(4 row(s) affected)

Voir aussi

Concepts

Utilisation de UNION, EXCEPT et INTERSECT avec d'autres instructions Transact-SQL

Aide et Informations

Assistance sur SQL Server 2005