UNION en SQL
El operador
UNION
en SQL combina el resultado de dos o más consultas
SELECT
en un solo conjunto de filas.
UNION apila filas de dos consultas compatibles. Piensa en dos listas de clientes o productos que quieres ver en un único informe sin escribir dos consultas separadas.
La diferencia clave: UNION elimina duplicados; UNION ALL los conserva y suele ser más rápido.
Cada
SELECT
debe devolver el mismo número de columnas, con tipos compatibles y en el mismo orden. Los nombres de columna del resultado suelen tomarse de la primera consulta.
Sintaxis UNION en SQL
La sintaxis indica el orden de argumentos y palabras clave. Copia la plantilla y sustituye nombres de columnas o literales entre comillas simples.
Plantilla
SELECT columna(s) FROM tabla1
UNION
SELECT columna(s) FROM tabla2;
UNION frente a UNION ALL
Por defecto,
UNION
elimina duplicados
. Si quieres conservar todas las filas (incluidas repetidas), usa
UNION ALL
:
Plantilla UNION ALL
SELECT columna(s) FROM tabla1
UNION ALL
SELECT columna(s) FROM tabla2;
Ejemplo UNION en SQL
Lista cada ciudad distinta que aparece en Clientes o en Proveedores :
Ciudades sin duplicados
SELECT Ciudad FROM Clientes
UNION
SELECT Ciudad FROM Proveedores
ORDER BY Ciudad;
Resultado: 13 ciudades distintas (Madrid cuenta una sola vez aunque esté en ambas tablas).
| Ciudad |
|---|
| Barcelona |
| Berlin |
| London |
| Madrid |
| … 9 ciudades más (13 distintas) |
UNION ALL en SQL
La sintaxis indica el orden de argumentos y palabras clave. Copia la plantilla y sustituye nombres de columnas o literales entre comillas simples.
Ciudades con duplicados
SELECT Ciudad FROM Clientes
UNION ALL
SELECT Ciudad FROM Proveedores
ORDER BY Ciudad;
Resultado: 16 filas — Madrid, London y otras ciudades repetidas si aparecen en las dos tablas.
Tablas demo para UNION
Tabla Proveedores (demo)
| ID_Proveedor | Nombre | Ciudad | Pais |
|---|---|---|---|
| 1 | Alimentos Ibérica | Madrid | España |
| 2 | Delicias del Mar | Vigo | España |
| 3 | Granos del Valle | Zaragoza | España |
| 4 | Lácteos Premium | Lugo | España |
| 5 | Frutas del Sur | Málaga | España |
| 6 | Import Foods Ltd | London | UK |
| ID_Cliente | Nombre_Cliente | Ciudad | Pais |
|---|---|---|---|
| 1 | Ana García | Madrid | España |
| 2 | Luis Pérez | Barcelona | España |
| 3 | María López | Valencia | España |
| 4 | Carlos Ruiz | Madrid | España |
| 6 | John Smith | London | UK |
| … 5 clientes más en la demo (10 en total) | |||
UNION con WHERE en SQL
Cada consulta puede llevar su propia condición antes del
UNION
:
Ciudades españolas
SELECT Ciudad, Pais FROM Clientes WHERE Pais = 'España'
UNION
SELECT Ciudad, Pais FROM Proveedores WHERE Pais = 'España'
ORDER BY Ciudad;
Resumen UNION
-
UNIONapila filas de varias consultas con la misma estructura. -
UNIONquita duplicados;UNION ALLlos conserva. -
Puedes filtrar cada
SELECTconWHEREantes de unir. -
Siguiente paso:
valores NULL
e
IS NULL.
Cómo practicar en el editor
1. Pulsa Pruébalo tú mismo en un ejemplo.
2. Cambia un filtro, columna o literal.
3. Ejecuta y compara el resultado con la tabla de ejemplo.
Practica con ejercicios
Repasa la lección con consultas sobre Clientes (Elena Torres, Valencia…) y Productos (pera, mango, fresa) de nuestra base demo.
Ejercicio: Ciudades distintas con UNION
Combina ciudades de Clientes y Proveedores sin duplicados. Usa la tabla Clientes de la demo (Elena Torres, Valencia…).
Consulta
SELECT Ciudad FROM Clientes
UNION
SELECT Ciudad FROM Proveedores
ORDER BY Ciudad;
Ejercicio: Ciudades con UNION ALL
Practica UNION ALL conservando duplicados. Usa la tabla Clientes de la demo (Elena Torres, Valencia…).
Consulta
SELECT Ciudad FROM Clientes
UNION ALL
SELECT Ciudad FROM Proveedores
ORDER BY Ciudad;
Ejercicio: UNION con filtro WHERE
Combina consultas filtradas por país. Usa la tabla Clientes de la demo (Elena Torres, Valencia…).
Consulta
SELECT Ciudad, Pais FROM Clientes WHERE Pais = 'España'
UNION
SELECT Ciudad, Pais FROM Proveedores WHERE Pais = 'España'
ORDER BY Ciudad;
Cómo practicar
1. Pulsa Ejecutar aquí en el bloque.
2. Modifica la consulta (filtro, columnas…).
3. O abre el editor para más espacio.
Comprueba lo aprendido
Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.