Combinación de consultas: el operador UNION
Los resultados de las consultas SQL se pueden combinar. Para ello existe el operador UNION.
Estructura general de una consulta con el operador UNION
SELECT campos_tabla FROM nombre_tabla
UNION [ALL]
SELECT campos_tabla FROM nombre_tabla;- [ ]parte opcional
- campos_tabla
Las columnas que selecciona cada una de las consultas. Ambas consultas deben devolver el mismo número de columnas, y las columnas en la misma posición deben tener tipos compatibles.
- nombre_tabla
La tabla de la que toma los datos cada una de las consultas.
- ALL
Mantiene las filas repetidas en el resultado. Sin ALL, los duplicados se eliminan.
Palabra claveOpcional
- No confundas la combinación de consultas con la combinación de tablas: para eso sirve la cláusula JOIN.
- No confundas tampoco la combinación de consultas con las subconsultas. Las subconsultas se ejecutan sobre tablas relacionadas.
UNION combina tablas que no están relacionadas entre sí, pero que tienen una estructura parecida.
Para que UNION funcione correctamente, las tablas resultantes de cada consulta SQL deben tener el mismo número de columnas, con tipos de datos compatibles y en el mismo orden.
Hay otros dos operadores cuyo comportamiento es muy parecido al de UNION:
- INTERSECT Combina dos consultas SELECT, pero devuelve solo los registros del primer SELECT que tienen coincidencia en el segundo SELECT.
- EXCEPT Combina dos consultas SELECT, pero devuelve solo los registros del primer SELECT que no tienen coincidencia en el segundo SELECT.
Ejemplos de uso
Por ejemplo, supongamos que hay que mostrar los nombres de todos los productos y los nombres de todos los miembros de la familia (una tarea bastante artificial). Como los tipos de datos coinciden, podemos hacerlo.
MySQL 8.4SELECT DISTINCT Goods.good_name AS name FROM Goods UNION SELECT DISTINCT FamilyMembers.member_name AS name FROM FamilyMembers;