Esta clausula devuelve los registros que concuerdan entre dos o más consultas comparadas. Automáticamente devuelve los registros distinctos y tal y como UNION y EXCEPT, las consultas comparadas deben tener los mismos números de columnas y los mismos tipos (o tipos comparables) en el mismo orden.
Ejemplo:
SELECT SKU
FROM Productos
INTERSECT
SELECT SKU
FROM Ventas
Claro, el mismo resultado puede ser obtenido mediante JOINS o mediante la cláusula IN, no obstante, si comparamos:
SELECT DISTINCT P.SKU
FROM Productos P
INNER JOIN Ventas V
ON P.Producto_ID = V.Producto_ID
A la consulta con JOIN se le tiene que agregar DISTINCT, y en caso de tener más de una columna, se le tiene que agregar una comparativa por cada columna.
SELECT SKU
FROM Productos
WHERE SKU IN
(
SELECT SKU
FROM Ventas
)
La consulta con la cláusula IN da el mismo resultado, no obstante, IN solo puede comparar columna por columna, mientras que INTERSECT puede comparar registros enteros, renglón por renglon.
En los casos en los que se tenga que comprar mas de una columna, las consultas con JOIN o con IN se volverán más y más complejas, o incluso imposibles de codificar, sobre todo cuando las consultas comparadas contengan JOIN’s, IN’s y otras cláusulas similares.
admin
August 11, 2011
SQL SERVER
No Comment