Al terminar esta lección podrás
- Combinar resultados compatibles.
- Elegir UNION o UNION ALL.
- Detectar incompatibilidades de columnas.
Antes de empezar: SELECT y tipos de datos compatibles. Explica en una frase qué recuerdas antes de continuar.
La idea, sin código
UNION apila resultados y elimina duplicados; UNION ALL conserva todas las filas. Ambas consultas deben devolver el mismo número de columnas con tipos compatibles.
Pregunta guía: ¿qué representa cada fila antes y después de aplicar este concepto?
Sintaxis mínima
consulta_1
UNION [ALL]
consulta_2Primer ejemplo guiado
| id | nombre | ciudad | |
|---|---|---|---|
| 1 | Ana | Madrid | ana@ejemplo.es |
| 2 | Luis | Valencia | luis@ejemplo.es |
| 3 | Marta | Madrid | NULL |
| 4 | Omar | Sevilla | omar@ejemplo.es |
| 5 | Nora | Bilbao | nora@ejemplo.es |
| id | nombre | departamento | salario | fecha_alta |
|---|---|---|---|---|
| 1 | Lucía | Ventas | 28000 | 2024-02-12 |
| 2 | Diego | Datos | 36000 | 2023-09-01 |
| 3 | Sara | Datos | 39000 | 2022-04-18 |
| 4 | Iván | Ventas | 31000 | 2025-01-10 |
| 5 | Elena | Soporte | 29500 | 2024-11-20 |
Analiza la consulta antes de comprobar el resultado:
SELECT nombre AS persona, 'cliente' AS tipo FROM clientes
UNION ALL
SELECT nombre, 'empleado' FROM empleados
ORDER BY persona;| persona | tipo |
|---|---|
| Ana | cliente |
| Diego | empleado |
| Elena | empleado |
| Iván | empleado |
| Lucía | empleado |
| Luis | cliente |
| Marta | cliente |
| Nora | cliente |
| Omar | cliente |
| Sara | empleado |
Qué ocurre paso a paso
- Cada SELECT devuelve dos columnas compatibles.
- UNION ALL conserva todos los nombres.
- El alias del resultado procede del primer SELECT.
Error frecuente
Consulta o razonamiento problemático
SELECT nombre FROM clientes UNION SELECT nombre, salario FROM empleadosLos dos SELECT devuelven cantidades distintas de columnas.
Práctica guiada
Resuelve una sola dificultad cada vez
Combina las ciudades de clientes y los departamentos de empleados en una columna llamada grupo.
Solución razonada
SELECT ciudad AS grupo FROM clientes UNION SELECT departamento FROM empleados;La consulta crea un conjunto único de etiquetas procedentes de dos fuentes.
Comprueba: identifica qué parte recupera, filtra, transforma, relaciona o modifica los datos.
Ahora sin guía
Transfiere lo aprendido
Repite el ejercicio con UNION ALL y explica la diferencia esperada.
Comparar con una solución posible
SELECT ciudad AS grupo FROM clientes
UNION ALL
SELECT departamento FROM empleados;Puede existir otra solución válida. Comprueba que produce el resultado pedido y que puedes explicar cada cláusula.
Resumen para llevarte
- UNION combina resultados verticalmente.
- UNION elimina duplicados; UNION ALL no.
- INTERSECT y EXCEPT no tienen el mismo soporte en todos los motores.
Siguiente paso: Continúa con Crear categorías con CASE.