Esecuzione di semi-join con gli operatori EXCEPT e INTERSECT

Gli operatori EXCEPT e INTERSECT consentono di confrontare i risultati di due o più istruzioni SELECT e restituire valori distinti. EXCEPT restituisce tutti i valori distinti della query a sinistra dell'operatore EXCEPT che non sono restituiti dalla query sul lato destro. INTERSECT restituisce tutti i valori distinti restituiti da entrambe le query a sinistra e a destra dell'operatore INTERSECT. I set di risultati confrontati attraverso l'operatore EXCEPT o INTERSECT devono avere tutti la stessa struttura, ovvero devono includere lo stesso numero di colonne e i tipi di dati delle colonne corrispondenti dei set di risultati devono essere compatibili tra di loro. Per ulteriori informazioni, vedere EXCEPT e INTERSECT (Transact-SQL).

Si considerino ad esempio le tabelle TableA, TableB e TableC con i dati seguenti nelle rispettive colonne di tipo intcol1.

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

NULL

NULL

2

NULL

1

2

NULL

3

2

1

4

4

2

4

4

2

2

3

4

4

Utilizzando EXCEPT, la query seguente restituisce tutti i valori distinti della query a sinistra dell'operando EXCEPT che non sono inclusi nella query di destra.

SELECT * FROM TableA EXCEPT SELECT * FROM TableB

Di seguito vengono riportati i risultati:

Col1       ----------- 2(1 row(s) affected)

Utilizzando INTERSECT, la query restituisce tutti i valori distinti restituiti dalle query a sinistra e a destra dell'operatore INTERSECT.

SELECT * FROM TableA INTERSECT SELECT * FROM TableB

Di seguito vengono riportati i risultati:

Col1       ----------- NULL134(4 row(s) affected)

L'operatore INTERSECT ha la precedenza sull'operatore EXCEPT. Nella query seguente vengono ad esempio utilizzati entrambi gli operatori:

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

Di seguito vengono riportati i risultati:

Col1       ----------- NULL123(4 row(s) affected)

Vedere anche

Concetti

Utilizzo degli operatori UNION, EXCEPT e INTERSECT con altre istruzioni Transact-SQL

Guida in linea e informazioni

Assistenza su SQL Server 2005