SQL: operador de intersección

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

SQL: operador de intersección

Este tutorial de SQL explica cómo usar SQL operador INTERSECT Con sintaxis y ejemplos.

describir

El operador SQL INTERSECT se usa para devolver los resultados de 2 o más declaraciones SELECT. Sin embargo, solo devuelve todas las filas seleccionadas por la consulta o el conjunto de datos. Si existe un registro en una consulta pero no en otra, se omitirá del resultado INTERSECT.

consulta de intersección

explique: Una consulta INTERSECT devolverá registros en el área sombreada en azul. Estos son registros que existen tanto en Dataset1 como en Dataset2.

Cada instrucción SQL en SQL INTERSECT debe tener la misma cantidad de campos en un conjunto de resultados con tipos de datos similares.

sintaxis

La sintaxis del operador INTERSECT en SQL es:

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
INTERSECT
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

parámetro o parámetro

expresión1, expresión2, expresión_n La columna o el cálculo que desea recuperar. tabla La tabla de la que desea recuperar registros. Debe aparecer al menos una tabla en la cláusula FROM. La condición WHERE es opcional. Estas son las condiciones que se deben cumplir para seleccionar registros.

notas

  • Debe haber el mismo número de expresiones en ambas sentencias SELECT.
  • Las expresiones correspondientes en la instrucción SELECT deben tener el mismo tipo de datos. Por ejemplo: expresión1 debe ser del mismo tipo de datos en la primera y segunda instrucción SELECT.

Ejemplo: usar una sola expresión

El siguiente es un ejemplo del operador SQL INTERSECT donde un campo tiene el mismo tipo de datos:

SELECT supplier_id
FROM suppliers
INTERSECT
SELECT supplier_id
FROM orders;

En este ejemplo de SQL INTERSECT, si el Id. de proveedor aparece en las tablas Proveedores y Pedidos, aparecerá en su conjunto de resultados.

Ahora, compliquemos aún más nuestro ejemplo agregando una condición WHERE a la consulta INTERSECT.

SELECT supplier_id
FROM suppliers
WHERE supplier_id > 78
INTERSECT
SELECT supplier_id
FROM orders
WHERE quantity <> 0;

En este ejemplo, se agregó una cláusula WHERE a cada conjunto de datos. El primer conjunto de datos se filtró para que solo se devuelvan los registros de la tabla de proveedores con ID de proveedor superiores a 78. El segundo conjunto de datos se ha filtrado para que solo se devuelvan los registros de la tabla de pedidos cuya cantidad no sea igual a 0.

Ejemplo: uso de varias expresiones

A continuación, veamos un ejemplo de cómo usar el operador INTERSECT en SQL para devolver varias columnas.

Por ejemplo:

SELECT contact_id, last_name, first_name
FROM contacts
WHERE last_name <> 'Anderson'
INTERSECT
SELECT customer_id, last_name, first_name
FROM customers
WHERE customer_id < 50;

En este ejemplo de INTERSECT, la consulta devuelve registros en la tabla de contactos donde los valores de contact_id, last_name y first_name coinciden con los valores de customer_id, last_name y first_name en la tabla de clientes.

Cada conjunto de datos tiene una condición DONDE para filtrar aún más los resultados y devolver solo los registros de los contactos cuyo apellido no sea Anderson. Si customer_id es menor que 50, se devuelven los registros de la tabla de clientes.

Ejemplo: uso de ORDEN POR

El siguiente es un ejemplo de INTERSECT usando la cláusula ORDER BY:

SELECT supplier_id, supplier_name
FROM suppliers
WHERE supplier_id > 2000
INTERSECT
SELECT company_id, company_name
FROM companies
WHERE company_id > 1000
ORDER BY 2;

Debido a que los nombres de las columnas difieren entre las dos declaraciones SELECT, es más ventajoso referirse a las columnas en la cláusula ORDER BY por su posición en el conjunto de resultados.En este ejemplo, hemos ordenado los resultados por nombre del proveedor/nombre de la empresa en orden ascendente como ORDER BY 2.

Posición n.º 2 del campo Nombre del proveedor/Nombre de la empresa en el conjunto de resultados.