En PostgreSQL, UNION
El operador combina los resultados de varias consultas en un único conjunto de resultados.
Sintaxis
La sintaxis oficial es así:
query1 UNION [ALL] query2
La UNION
el operador agrega el resultado de query2
al resultado de query1
(aunque no hay garantía de que este sea el orden en que se devuelven las filas).
Las filas duplicadas se eliminan a menos que UNION ALL
se utiliza.
Ejemplo
Supongamos que tenemos las siguientes tablas:
SELECT * FROM Teachers;
SELECT * FROM Students;
Resultado:
teacherid | teachername -----------+------------- 1 | Warren 2 | Ben 3 | Cathy 4 | Cathy 5 | Bill 6 | Bill studentid | studentname -----------+------------- 1 | Faye 2 | Jet 3 | Spike 4 | Ein 5 | Warren 6 | Bill
Podemos usar la UNION
operador para devolver a todos los profesores y estudiantes:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
Resultado:
teachername ------------- Spike Ben Ein Cathy Jet Faye Bill Warren (8 rows)
De forma predeterminada, UNION
operador aplica implícitamente un DISTINCT
operación. En otras palabras, devuelve solo valores distintos de forma predeterminada. Entonces, los resultados anteriores contienen solo uno de Warren, Cathy y Bill. Esto es a pesar del hecho de que las tablas combinadas en realidad contienen dos Warren, dos Cathy y tres Bill (hay dos maestros llamados Cathy, un maestro y un cliente llamado Warren, y dos llamados Bill, así como un estudiante llamado Bill).
Aquí hay un ejemplo que usa explícitamente DISTINCT
operador:
SELECT TeacherName FROM Teachers
UNION DISTINCT
SELECT StudentName FROM Students;
Resultado:
teachername ------------- Spike Ben Ein Cathy Jet Faye Bill Warren (8 rows)
Mismo resultado.
Incluir duplicados
Podemos usar el ALL
palabra clave para incluir valores duplicados en los resultados:
SELECT TeacherName FROM Teachers
UNION ALL
SELECT StudentName FROM Students;
Resultado:
teachername ------------- Warren Ben Cathy Cathy Bill Bill Faye Jet Spike Ein Warren Bill (12 rows)
Esta vez obtuvimos doce filas en lugar de las ocho que obtuvimos en nuestro primer ejemplo.
Podemos ver que ambos Cathys fueron devueltos y los tres Bills fueron devueltos.