El operador SQL UNION permite poner de extremo a extremo los resultados de varias consultas utilizando el comando SELECT. Se puede controlar combinando los conjuntos resultantes de dos o más instrucciones Select. Además, elimina el valor duplicado de las filas que se encuentran entre diferentes declaraciones de selección.
Nota: De forma predeterminada, el operador SQL UNION solo selecciona valores distintos. Sin embargo, para permitir valores duplicados, se pueden usar UNION ALL.
Sintaxis en SQL UNION
La sintaxis para SQL UNION es unir los resultados de 2 matrices sin mostrar duplicados es:
Ejemplo de UNION entre dos tablas
SELECT * FROM tablaA
UNION
SELECT * FROM tablaB;
Diagrama explicativo:
Dos conjuntos A y B con SQL UNION, puede unir estos dos conjuntos eliminando los valores duplicados, como puede ver el espacio que genera la unión son los datos que genera la consulta.

Ejemplo del operador SQL unión
Imaginemos una empresa que tiene varias tiendas y en cada una de estas tiendas hay una tabla que enumera los clientes.
La tabla de la tienda #1 se llama “tienda1_cliente” y contiene los siguientes datos:
primer nombre | apellido | compra_total |
---|---|---|
Pedro | Pérez | 135 |
Marie | Bernardo | 75 |
Sofía | Dupond | 27 |
Marcelo | Martín | 39 |
La tabla de la tienda #2 se llama “tienda2_cliente” y contiene los siguientes datos:
primer nombre | apellido | compra_total |
---|---|---|
Marion | Leroy | 285 |
Pablo | Moreau | 133 |
Marie | Bernardo | 75 |
Marcelo | Martín | 39 |
Sabiendo que algunos clientes están presentes en las 2 tablas, para evitar devolver los mismos registros varias veces, se debe utilizar la consulta en SQL UNION. La consulta en SQL server es entonces la siguiente:
Ejemplo de UNION entre dos tablas de clientes
SELECT * FROM tienda1_cliente
UNION
SELECT * FROM tienda2_cliente;
Resultados :
primer nombre | apellido | compra_total |
---|---|---|
Pedro | Pérez | 135 |
Marie | Bernardo | 75 |
Sofía | Dupond | 27 |
Marcelo | Martín | 39 |
Marie | Leroy | 285 |
Pablo | Moreay | 133 |
El resultado de esta consulta muestra claramente que los registros de las 2 consultas se colocan de extremo a extremo pero sin incluir las mismas filas varias veces.
Ejemplo del operador UNION con alias SQL
Las alias en SQL, se usan para nombrar a una tabla o columna temporalmente. Entonces, escribamos una consulta para enumerar todos los empleados y proyectos únicos.
Ejemplo de UNION entre Empleado y Proyecto
SELECT 'Empleado' AS Tipo, Nombre, Ciudad, Pais
FROM Empleado
UNION
SELECT 'Proyecto', Nombre, Ciudad, Pais
FROM Proyecto;
Resutlados:
Tipo | Nombre | Ciudad | País |
Empleado | Manuel | Madrid | España |
Empleado | Raúl | Tijuana | México |
Empleado | Ana | Nueva York | EE.UU |
Empleado | John | Londres | España |
Empleado | pedro | Nueva York | EE.UU |
Proyecto | Proyecto 1 | Madrid | España |
Proyecto | Proyecto 2 | Tijuana | México |
Proyecto | Proyecto 3 | Acapulco | México |
Proyecto | Proyecto 4 | Tijuana | México |
Proyecto | Proyecto 5 | Madrid | España |
Operador de conjunto SQL UNION con cláusula WHERE
Escriba una consulta para recuperar las distintas ciudades de México y sus códigos postales de la tabla Empleados y Proyectos.
Ejemplo SQL: UNION de Ciudades en México (Empleado + Proyecto)
SELECT Ciudad, codigo_postal, pais
FROM Empleado
WHERE Pais = 'México'
UNION
SELECT Ciudad, codigo_postal, pais
FROM Proyecto
WHERE Pais = 'México'
ORDER BY Ciudad;
Resultados:
Ciudad | Código Postal | País |
Acapulco | 110006 | México |
Tijuana | 400015 | México |
SQL UNION con nombres diferentes en la columna
En el siguiente ejemplo, las dos consultas se han establecido usando dos criterios y columnas diferentes. Las diferentes columnas en dos declaraciones son ‘VIDA’ y ‘qty’. Esta consulta funciona porque ambas columnas tienen el mismo tipo de datos. Por lo general, los campos de las columnas que retornan en el resultado, se toman de la primera consulta.
Código SQL:
Ejemplo SQL: UNION entre Producto y Compra
SELECT prod_cod, prod_nombre, vida
FROM producto
WHERE vida > 6
UNION
SELECT prod_cod, prod_nombre, qty
FROM compra
WHERE qty < 20;
Producción:
PROD_COD PROD_NOMBRE VIDA
---------- --------------- ---------- ----------
P001 Televisor 7
P001 TV 15
P002 REPRODUCTOR DVD 9
P002 REPRODUCTOR DVD 10
P003 iPod 9
P004 SISTEMA DE SONIDO 8
P006 SISTEMA DE SONIDO 8
P007 PORTÁTIL 6
Operador UNIÓN con joins
El operador SQL UNION se puede usar con SQL JOINS para recuperar datos de dos tablas diferentes. Voy a considerar la siguiente tabla junto con la tabla Empleados para el ejemplo.
Tabla de detalles del proyecto
ProyID | Días_laborables | EmpID | CostodelProyecto |
11 | 12 | 4 | 38000 |
22 | 14 | 3 | 82000 |
33 | 15 | 1 | 80000 |
44 | 16 | 3 | 90000 |
55 | 21 | 1 | 55000 |
Ejemplo SQL: UNION entre LEFT JOIN y RIGHT JOIN
SELECT EmpleID, Nombre, CostodelProyecto
FROM Empleado
LEFT JOIN Detalledelproyect
ON Empleado.EmpleID = Detalledelproyect.EmpleID
UNION
SELECT EmpleID, Nombre, CostodelProyecto
FROM Empleado
RIGHT JOIN Detalledelproyect
ON Empleado.EmpleID = Detalledelproyect.EmpleID;
Resultados:
EmpleID | Nombre | CostodelProyecto |
1 | Manuel | 80000 |
1 | Manuel | 55000 |
2 | Raúl | NULO |
3 | Ana | 82000 |
3 | Ana | 90000 |
4 | John | 38000 |
5 | Pedro | NULO |
Resumen
El operador de conjunto SQL UNION se usa para unir dos o más consulta en un resultado distinto. Un caso de uso típico para esto es cuando tenemos datos divididos en varias tablas y queremos fusionarlos.
Los operadores INTERSECT y EXCEPT son otro tipo de operadores de conjuntos en SQL que nos permiten encontrar duplicados en los resultados devueltos por dos consultas (INTERSECT) o resultados de una consulta que no aparecen en una segunda (EXCEPT).