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.