> lección 16/18 · 12 min

UNION y UNION ALL

Concepto

JOIN pone tablas lado a lado; UNION las apila, una debajo de otra. Sirve para juntar en una sola lista los resultados de dos consultas distintas, como "los cursos intermedios y los cursos largos".

Sintaxis
SELECT columna FROM tabla WHERE condición_1
UNION
SELECT columna FROM tabla WHERE condición_2;

UNION quita los repetidos. Si una fila aparece en las dos consultas, queda una sola vez.

SELECT titulo FROM cursos WHERE nivel = 'Intermedio'
UNION
SELECT titulo FROM cursos WHERE horas >= 30;

UNION ALL los conserva. Es más rápido, y sirve cuando los repetidos importan, por ejemplo para contar cuántas veces aparece algo.

SELECT titulo FROM cursos WHERE nivel = 'Intermedio'
UNION ALL
SELECT titulo FROM cursos WHERE horas >= 30;

Compara los dos resultados: "Reportes con SQL" y "Python para análisis" son intermedios y largos, y con UNION ALL aparecen dos veces.

Las columnas tienen que calzar. Las dos consultas deben devolver la misma cantidad de columnas, en el mismo orden y con tipos compatibles. El nombre de las columnas del resultado sale de la primera consulta.

UNION o WHERE con OR. Si las dos partes leen de la misma tabla, un WHERE ... OR ... suele bastar. UNION se vuelve necesario cuando cada parte necesita su propio FROM o sus propios JOIN.

> tarea SQL

La escuela invita a un conversatorio a dos grupos: quienes viven en Santiago y quienes tienen alguna nota de 6.5 o más. Arma la lista de invitados sin nombres repetidos, con una sola columna: nombre.

Tablas disponibles
  • cursos: id, titulo, nivel, horas
  • estudiantes: id, nombre, correo, edad, ciudad
  • inscripciones: id, estudiante_id, curso_id, nota, estado

Primero intenta: las pistas aparecen después de 2 intentos con un resultado incorrecto (los errores de código no cuentan). Llevas 0.

Aprueba las tareas de esta lección para ver el cierre.