Operador UNION en PostgreSQL
El operador UNION de PostgreSQL combina los resultados de dos o más sentencias SELECT.
El operador UNION se utiliza para combinar los conjuntos de resultados de dos o más sentencias SELECT.
Tenga en cuenta que cada declaración SELECT dentro de UNION debe tener el mismo número de columnas. Las columnas también deben tener tipos de datos similares. Además, el orden de las columnas en cada declaración SELECT debe ser el mismo.
Sintaxis
La sintaxis básica de UNIONS es la siguiente:
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
La cláusula de condición aquí puede configurarse como cualquier expresión según sus necesidades.
Ejemplos
Crear la tabla COMPANY (Descargar el archivo SQL de COMPANY), los datos son los siguientes:
ejemplodb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows)
Crear la tabla DEPARTMENT (Descargar el archivo SQL de DEPARTMENT), los datos son los siguientes:
ejemplodb=# SELECT * from DEPARTMENT; id | dept | emp_id ----+-------------+-------- 1 | IT Billing | 1 2 | Engineering | 2 3 | Finance | 7 4 | Engineering | 3 5 | Finance | 4 6 | Engineering | 5 7 | Finance | 6 (7 rows)
Ahora, usamos la cláusula UNION en la declaración SELECT para unir las dos tablas, como se muestra a continuación:
SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID
UNION
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID;
El resultado es el siguiente:
emp_id | name | dept
--------+-------+--------------
5 | David | Engineering
6 | Kim | Finance
2 | Allen | Engineering
3 | Teddy | Engineering
4 | Mark | Finance
1 | Paul | IT Billing
7 | James | Finance
(7 rows)
Cláusula UNION ALL
El operador UNION ALL puede unir dos declaraciones SELECT que tengan filas duplicadas. De forma predeterminada, el operador UNION selecciona valores distintos. Si se permiten valores duplicados, use UNION ALL.
Sintaxis
La sintaxis básica de la cláusula UINON ALL es la siguiente:
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION ALL SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
La cláusula de condición aquí puede configurarse como cualquier expresión según sus necesidades.
Ejemplos
Ahora, unamos las dos tablas mencionadas anteriormente usando la declaración SELECT junto con la cláusula UNION ALL:
SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID
UNION ALL
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID;
El resultado es el siguiente:
emp_id | name | dept
--------+-------+--------------
1 | Paul | IT Billing
2 | Allen | Engineering
7 | James | Finance
3 | Teddy | Engineering
4 | Mark | Finance
5 | David | Engineering
6 | Kim | Finance
1 | Paul | IT Billing
2 | Allen | Engineering
7 | James | Finance
3 | Teddy | Engineering
4 | Mark | Finance
5 | David | Engineering
6 | Kim | Finance
(14 rows)Otras extensiones