Uso de los operadores INTERSECT y EXCEPT

Completado

INTERSECT y EXCEPT comparan dos conjuntos de resultados entre sí y devuelven filas en común, o filas que aparecen en uno pero no en el otro.

INTERSECT y EXCEPT se explican mejor mediante un diagrama de Venn. Los círculos de los diagramas siguientes representan dos conjuntos de resultados de la tabla de productos, uno que devuelve ProductIDs 500 a 750 y el segundo devuelve ProductIDs 751 a 1000. Queremos saber qué colores están en ambos conjuntos de resultados y qué colores están en uno, pero no en el otro. Usaremos INTERSECT y EXCEPT para averiguarlo.

INTERSECT Devuelve filas que están presentes en ambos conjuntos.

Imagen de un diagrama de Venn que muestra los resultados INTERSECT.

EXCEPT Devuelve filas distintas de la consulta de entrada izquierda que no son generadas por la consulta de entrada derecha.

Imagen de un diagrama de Venn que muestra los resultados EXCEPT.

En el ejemplo de código siguiente, quiere saber qué colores aparecen en ambos conjuntos de resultados de la tabla de productos:

SELECT color FROM SalesLT.Product
WHERE ProductID BETWEEN 500 and 750
INTERSECT
SELECT color FROM SalesLT.Product
WHERE ProductID BETWEEN 751 and 1000;

En este ejemplo, desea saber qué colores están en el primer conjunto de resultados, pero NO en el segundo conjunto de resultados. En este caso, use el operador EXCEPT:

SELECT color FROM SalesLT.Product
WHERE ProductID BETWEEN 500 and 750
EXCEPT
SELECT color FROM SalesLT.Product
WHERE ProductID BETWEEN 751 and 1000;

Tenga en cuenta que los resultados son diferentes, en función del orden de las consultas. Por lo tanto, la consulta anterior devolverá un conjunto de resultados diferente al siguiente:

SELECT color FROM SalesLT.Product
WHERE ProductID BETWEEN 751 and 1000
EXCEPT
SELECT color FROM SalesLT.Product
WHERE ProductID BETWEEN 500 and 750;