Al terminar, podrás
- Alinear dos consultas con el mismo número de columnas.
- Elegir entre
UNIONyUNION ALLsegún el tratamiento de duplicados. - Aplicar un único
ORDER BYal resultado compuesto.
Recupera lo aprendido: ¿JOIN añade información relacionada a las filas o apila dos listas?
La idea clave
Las operaciones de conjuntos apilan resultados verticalmente. Las consultas deben devolver el mismo número de columnas y las posiciones correspondientes deben contener valores compatibles.
UNION y JOIN resuelven preguntas distintas: UNION apila filas de resultados con la misma forma; un JOIN combina columnas de filas relacionadas. Si tu pregunta es “juntar dos listas”, piensa en UNION. Si es “añadir datos de otra tabla a cada fila”, piensa en JOIN.
Decisión principal: usa UNION ALL cuando todas las filas tienen significado y UNION solo cuando necesitas un conjunto sin duplicados. Eliminar duplicados implica trabajo adicional.
La sintaxis básica
SELECT columna_1 AS etiqueta
FROM tabla_1
UNION [ALL]
SELECT columna_2
FROM tabla_2
ORDER BY etiqueta;El nombre de la columna final procede del primer SELECT. El ORDER BY se escribe al final para ordenar el resultado completo.
Ejemplo paso a paso
Crearemos una lista única con dos ciudades de clientes y dos departamentos de empleados.
SELECT ciudad AS etiqueta
FROM clientes
WHERE ciudad IN ('Madrid', 'Bilbao')
UNION
SELECT departamento
FROM empleados
WHERE departamento IN ('Marketing', 'Soporte')
ORDER BY etiqueta;| etiqueta |
|---|
| Bilbao |
| Madrid |
| Marketing |
| Soporte |
Cómo funciona
- El primer bloque devuelve varias filas repetidas de Madrid y Bilbao.
- El segundo devuelve dos filas de Marketing y dos de Soporte.
UNIONreduce las diez filas de entrada a cuatro valores distintos.
Un error habitual
Desalinear las columnas
SELECT nombre
FROM clientes
UNION
SELECT nombre, salario
FROM empleados;El primer bloque devuelve una columna y el segundo dos. Añadir columnas no corrige el problema si representan conceptos distintos: decide una estructura común y respétala en todos los bloques.
Practica con datos
Laboratorio SQL
Resuelve la consulta
Escribe una consulta que cree una lista sin duplicados llamada grupo, combine ciudades de clientes y departamentos de empleados y ordene el resultado alfabéticamente.
Resultado esperado: 11 filas con grupo, ordenadas alfabéticamente.
Ver tablas y datos
Cargando la estructura del ejercicio…
Ambas consultas deben devolver una columna.
El alias se define en el primer SELECT y puede usarse al ordenar el resultado compuesto.
Usa UNION y escribe ORDER BY grupo al final de toda la consulta.
Solución
SELECT ciudad AS grupo FROM clientes
UNION
SELECT departamento FROM empleados
ORDER BY grupo;UNION elimina duplicados y el ORDER BY final ordena el resultado compuesto completo, no solo el segundo SELECT.
Puedes consultar la solución y volver a intentarlo. La práctica se completa cuando tu consulta funciona.
La consulta usa datos ficticios y se ejecuta solo en este navegador.
Fuentes técnicas consultadas
Las referencias describen la compatibilidad de columnas, la eliminación de duplicados y la posición del orden final.
Comprueba si puedes explicarlo
Una consulta devuelve A, A y otra devuelve A, B. ¿Cuántas filas producen UNION ALL y UNION?
Ver respuesta razonada
UNION ALL devuelve cuatro filas y conserva las repeticiones. UNION devuelve dos: A y B. Sin ORDER BY no se garantiza en qué orden aparecen.
Responde antes de abrir la explicación. Si necesitaste ayuda, cierra la respuesta y vuelve a explicarlo con tus palabras antes de dar la lección por aprendida.
Qué debes recordar
- Las consultas combinadas deben tener igual número de columnas compatibles.
- UNION elimina duplicados; UNION ALL conserva todas las filas.
- El alias del primer SELECT y el ORDER BY final describen el resultado compuesto.
A continuación: Continúa con Crea categorías con CASE.