Ausführen von Semi-Join-Vorgängen mit EXCEPT und INTERSECT

Die Operatoren EXCEPT und INTERSECT ermöglichen es Ihnen, die Ergebnisse zwei oder mehr SELECT-Anweisungen miteinander zu vergleichen und unterschiedliche Werte zurückgeben zu lassen. Der EXCEPT-Operator gibt sämtliche unterschiedlichen Werte der Abfrage links vom EXCEPT-Operator zurück, die nicht von der Abfrage rechts zurückgegeben werden. INTERSECT gibt sämtliche unterschiedlichen Werte zurück, die von der Abfrage links und rechts vom INTERSECT-Operator zurückgegeben werden. Die mithilfe von EXCEPT oder INTERSECT verglichenen Resultsets müssen alle dieselbe Struktur aufweisen. Sie müssen über dieselbe Anzahl an Spalten verfügen, und die einander entsprechenden Resultsetspalten müssen kompatible Datentypen aufweisen. Weitere Informationen finden Sie unter EXCEPT und INTERSECT (Transact-SQL).

Betrachten Sie die Tabellen TableA, TableB und TableC mit folgenden Daten in ihrer jeweiligen int-Spalte col1.

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

mithilfe von EXCEPT gibt folgende Abfrage sämtliche unterschiedlichen Werte der Abfrage links vom EXCEPT-Operand, die in der rechten Abfrage nicht gefunden wurden.

SELECT * FROM TableA EXCEPT SELECT * FROM TableB

Im Folgenden werden die Ergebnisse aufgeführt:

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

(1 row(s) affected)

mithilfe von INTERSECT gibt diese Abfrage sämtliche unterschiedlichen Werte zurück, die von der Abfrage links und rechts vom INTERSECT-Operator zurückgegeben werden.

SELECT * FROM TableA INTERSECT SELECT * FROM TableB

Im Folgenden werden die Ergebnisse aufgeführt:

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

(4 row(s) affected)

Der INTERSECT-Operator hat gegenüber EXCEPT Vorrang. In folgender Abfrage werden beispielsweise beide Operatoren verwendet:

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

Im Folgenden werden die Ergebnisse aufgeführt:

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

(4 row(s) affected)

Siehe auch

Konzepte

Verwenden von UNION, EXCEPT und INTERSECT mit anderen Transact-SQL-Anweisungen

Hilfe und Informationen

Informationsquellen für SQL Server 2005