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.
SQLite: operador de intersección
Este tutorial de SQLite explica cómo usar operador INTERSECT Con sintaxis y ejemplos.
describir
El operador SQLite INTERSECT devuelve la intersección de 2 o más conjuntos de datos. Cada conjunto de datos está definido por una instrucción SELECT. Si existe un registro en ambos conjuntos de datos, se incluirá en el resultado INTERSECT. Sin embargo, si el registro existe en un conjunto de datos pero no en el otro, se ignorará 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 declaración SELECT en 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 SQLite 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 INTERSECT donde un campo tiene el mismo tipo de datos:
SELECT department_id FROM departments INTERSECT SELECT department_id FROM employees;
En este ejemplo de INTERSECT, si department_id está presente en las tablas de departamentos y empleados, estará presente en su conjunto de resultados.
Ahora, compliquemos aún más nuestro ejemplo agregando una condición WHERE a la consulta INTERSECT.
SELECT department_id FROM departments WHERE department_id >= 25 INTERSECT SELECT department_id FROM employees WHERE last_name <> 'Anderson';
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 departamentos con department_id mayor o igual a 25. El segundo conjunto de datos se filtró para que solo se devuelvan los registros de la tabla de empleados cuyo apellido no sea igual a Anderson.
Ejemplo: uso de varias expresiones
A continuación, veamos un ejemplo de cómo usar el operador INTERSECT en SQLite para devolver varias columnas.
Por ejemplo:
SELECT contact_id, last_name, first_name FROM contacts WHERE contact_id > 50 INTERSECT SELECT customer_id, last_name, first_name FROM customers WHERE last_name <> 'Peterson';
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 WHERE para filtrar aún más los resultados, de modo que solo se devuelvan los registros de los contactos con un contact_id mayor que 50. Si last_name no es igual a Peterson, se devuelve el registro en la tabla de clientes.
Ejemplo: uso de ORDEN POR
El siguiente es un ejemplo de INTERSECT usando la cláusula ORDER BY:
SELECT department_id, state FROM departments WHERE department_id >= 25 INTERSECT SELECT company_id, state FROM companies WHERE company_name LIKE 'T%' ORDER BY 1;
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 Department_id / company_id de forma ascendente como en ORDER BY 1
.
La posición #1 del campo contact_id / company_id en el conjunto de resultados.