Cómo usar el operador INTERSECT de SQL Server para consultar dos o más tablas

Resumen: en este tutorial, aprenderás a usar el operador INTERSECT de SQL Server para combinar los resultados de dos consultas en un único resultado que regresa las filas comunes para ambas consultas. Es decir, funcionaría como un AND lógico: devuelve solo las filas existentes en ambas consultas.
Introducción a SQL Server INTERSECT
SQL Server INTERSECT combina conjuntos de resultados de dos o más consultas y devuelve las filas que se encuentran en ambas consultas.
Este operador combina los resultados de dos consultas en un único resultado que regresa todas las filas comunes para ambas consultas. Es decir, funcionaría como un AND lógico: devuelve solo las filas existentes en ambas consultas.
A continuación, se ilustra la sintaxis de SQL Server INTERSECT:
query_1
INTERSECT
query_2
INTERSECT es similar al operador UNION, las consultas en la sintaxis anterior deben cumplir con las siguientes reglas:
- Ambas consultas deben tener el mismo número y orden de columnas.
- El tipo de datos de las columnas correspondientes debe ser el mismo o compatible.
Cómo funciona INTERSECT de SQL
La imagen anterior ilustra cómo funciona INTERSECT:
En esta ilustración, teníamos dos conjuntos de resultados T1 y T2:
- El conjunto de resultados T1 incluye 1, 2 y 3.
- El conjunto de resultados T2 incluye 2, 3 y 4.
La intersección de los conjuntos de resultados T1 y T2 devuelve las filas iguales que son 2 y 3, las cuales se encuentran en las dos consultas.
Ejemplo de INTERSECT de SQL Server
Considera la siguiente consulta, utilizando la base de datos de pruebas:
SELECT city
FROM sales.customers
INTERSECT
SELECT city
FROM sales.stores
ORDER BY city;
Resultado:
city |
---|
Baldwin |
Rowlett |
Santa Cruz |
La primera consulta encuentra todas las ciudades de los clientes y la segunda consulta encuentra las ciudades de las tiendas. Toda la consulta, que utiliza INTERSECT, devuelve las ciudades comunes de clientes y tiendas, que son las ciudades que generan ambas consultas de entrada.
Observa que agregamos la cláusula ORDER BY a la última consulta para ordenar el conjunto de resultados.
En este tutorial, has aprendido a utilizar el operador INTERSECT de SQL Server para devolver la intersección de los conjuntos de resultados de dos consultas.