PostgreSQL tiene un operador INTERSECT que se usa para combinar dos o más conjuntos de resultados devueltos por la declaración SELECT y proporcionar los datos comunes entre las tablas en un único conjunto de resultados.
Syntax: SELECT column_list FROM A INTERSECT SELECT column_list FROM B;
Se deben seguir las siguientes reglas al usar el operador INTERSECT con la instrucción SELECT:
- El número de columnas y su orden en las cláusulas SELECT debe ser el mismo.
- Los tipos de datos de las columnas deben ser compatibles.
El diagrama de Venn de un operador INTERSECT en PostgreSQL es el siguiente:
Ahora configuremos una base de datos de muestra para observar la implementación del operador INTERSECT. Crearemos una base de datos de muestra para los empleados RAW (digamos, raw_agents) y configuraremos tres tablas, a saber, agent, op_chi (operativa en CHINA) y op_pak (operativa en Pakistán). Para hacerlo, siga los siguientes procedimientos:
- Cree la base de datos usando el siguiente comando:
CREATE DATABASE raw_agents;
- Cree empleados de mesa, op_CHI y op_PAK usando los siguientes comandos:
CREATE TABLE agent( agent_id serial PRIMARY KEY, agent_name VARCHAR (255) NOT NULL ); CREATE TABLE op_chi( agent_id INT PRIMARY KEY, active_date DATE NOT NULL, FOREIGN KEY (agent_id) REFERENCES agent (agent_id) ); CREATE TABLE op_pak( agent_id INT PRIMARY KEY, active_date DATE NOT NULL, FOREIGN KEY (agent_id) REFERENCES agent (agent_id) );
- Inserte la fecha activa en las tablas con el nombre de los agentes con los siguientes comandos:
INSERT INTO agent(agent_name) VALUES ('Tiger'), ('James Bond'), ('Jason Bourne'), ('Ethan Hunt'), ('Ajit Doval'), ('Rowdy Rathore'), ('Milkha Singh'), ('Tom Hanks'), ('Sabana'), ('Razia Sultan'); INSERT INTO op_chi VALUES (1, '2000-02-01'), (2, '2001-06-01'), (5, '2002-01-01'), (7, '2005-06-01'); INSERT INTO op_pak VALUES (9, '2000-01-01'), (2, '2002-06-01'), (5, '2006-06-01'), (10, '2005-06-01');
Ahora que nuestra base de datos está lista, veamos algunos ejemplos.
Ejemplo 1:
Aquí buscaremos «agent_id» de los agentes que han estado activos tanto en Pakistán como en China usando el operador INTERSECT.
SELECT agent_id FROM op_CHI INTERSECT SELECT agent_id FROM op_PAk;
Producción:
Ejemplo 2:
Aquí buscaremos «agent_id» de los agentes que han estado activos tanto en Pakistán como en China usando el operador INTERSECT y usaremos la cláusula ORDER BY para clasificarlos por «agent_id» ascendente.
SELECT agent_id FROM op_CHI INTERSECT SELECT agent_id FROM op_PAk ORDER BY agent_id;
Producción:
Publicación traducida automáticamente
Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA