MySQL UNIÓN – Tutorial Completo
⚡ Resumen inteligente
MySQL UNION combina los resultados de dos o más consultas SELECT en un único conjunto de resultados consolidado. Esta explicación abarca las reglas de columna que validan una unión, la diferencia entre UNION DISTINCT y UNION ALL, y ejemplos prácticos ejecutados en la base de datos myflixdb.

¿Qué es un SINDICATO en MySQL?
UNIÓN es un MySQL Operador que combina los resultados de varias consultas SELECT en un conjunto de resultados consolidado. Las filas devueltas por la segunda consulta se colocan debajo de las filas devueltas por la primera, lo que produce una lista vertical en lugar de dos separadas.
El único requisito para que esto funcione es que el número de columnas sea el mismo en todas las consultas SELECT que deban combinarse.
Supongamos que tenemos dos tablas como las siguientes.
Ambas tablas contienen dos columnas del mismo tipo, por lo que pueden combinarse. Los ejemplos que siguen combinan precisamente estas dos tablas.
¿Por qué usar UNION?
Supongamos que hay un fallo en el diseño de su base de datos y está utilizando dos tablas diferentes destinadas al mismo propósito. Desea consolidar estas dos tablas en una sola, omitiendo cualquier registro duplicado.ping en la nueva tabla. En estos casos, puede usar UNION.
El operador también resulta útil en las tareas cotidianas de elaboración de informes:
- ArchiDatos verificados y en tiempo real: Se puede generar un informe sobre una tabla actual y una tabla de archivo que compartan las mismas columnas de forma conjunta, sin necesidad de fusionarlas físicamente.
- Varias fuentes, un informe: Para una auditoría rápida, se pueden listar los miembros y las películas, o las ventas de dos regiones, en un único informe.
- Comprobaciones de migración: Las filas de la tabla antigua y de la tabla nueva se pueden apilar y comparar antes de eliminar la tabla antigua.
Una unión no sustituye a una unión. La unión agrega filas debajo de otras filas, mientras que la unión agrega columnas al lado de otras columnas, y esa distinción determina qué operador requiere la tarea.
MySQL Sintaxis y reglas de UNION
Ahora que el propósito está claro, observe la estructura de la declaración y las reglas que aplica la base de datos.
SELECT column1, column2 FROM `table1` UNION [DISTINCT | ALL] SELECT column1, column2 FROM `table2`;
Tres reglas rigen todo sindicato:
- Igual número de columnas. Cada Instrucción SELECT debe devolver el mismo número de columnas, de lo contrario MySQL genera el error 1222.
- Tipos de datos compatibles en el mismo orden. La primera columna de la primera consulta se compara con la primera columna de la segunda, por lo que un número debe coincidir con un número y un texto debe coincidir con un texto.
- Los nombres provienen de la primera consulta. El encabezado del conjunto de resultados se toma de la primera instrucción SELECT, por lo que cualquier alias debe ir allí.
An ORDER BY LIMIT La cláusula colocada al final se aplica al resultado combinado en lugar de a una rama del mismo, y debe hacer referencia a los nombres de las columnas producidas por la primera instrucción SELECT.
UNION DISTINCT vs UNION ALL
Una vez establecidas las reglas, la decisión restante es si deben conservarse las filas duplicadas.
Combinar tablas usando DISTINCT
Ahora vamos a crear una consulta UNION para combinar ambas tablas usando DISTINCT.
SELECT column1, column2 FROM `table1` UNION DISTINCT SELECT column1, column2 FROM `table2`;
Aquí se eliminan las filas duplicadas y solo se devuelven filas únicas.
Nota: MySQL utiliza la cláusula DISTINCT como predeterminada al ejecutar consultas UNION si no se especifica nada.
Combinar tablas usando TODOS
Ahora vamos a crear una consulta UNION para combinar ambas tablas usando ALL.
SELECT `column1`, `column2` FROM `table1` UNION ALL SELECT `column1`, `column2` FROM `table2`;
Aquí se incluyen filas duplicadas, ya que usamos ALL.
Las dos imágenes permiten apreciar fácilmente la diferencia, y la tabla que aparece a continuación la resume.
| Punto de comparación | UNIÓN DISTINTO | UNION TODO |
|---|---|---|
| Filas duplicadas | Eliminado del resultado | Se mantuvo en el resultado |
| Comportamiento predeterminado | Sí, se aplica cuando no se especifica nada. | No, la palabra clave ALL debe estar escrita |
| Velocidad | Más lento, se requiere una pasada de eliminación de duplicados. | Más rápido, las filas se devuelven a medida que se leen. |
| Mejores usados cuando | La lista combinada debe contener filas únicas. | Cada fila importa, de lo contrario no puede haber duplicados. |
💡 Consejo: Si las dos ramas no pueden generar filas duplicadas, elija UNION ALL. De esta forma, la base de datos omite el trabajo de ordenación y comparación que requiere DISTINCT, lo que supone un ahorro considerable en tablas grandes.
Ejemplo práctico utilizando MySQL Banco de trabajo
Los ejemplos mostrados hasta ahora utilizaban tablas de muestra. Ahora, la misma consulta se ejecuta en la base de datos real de myflixdb, donde las dos tablas contienen registros bastante diferentes.
En nuestro myFlixDB, combinemos los membership_number y full_names columnas de la tabla de miembros con el movie_id y title columnas de la tabla películas. Ambas consultas devuelven dos columnas, por lo que la unión es válida.
Podemos utilizar la siguiente consulta.
SELECT `membership_number`, `full_names` FROM `members` UNION SELECT `movie_id`, `title` FROM `movies`;
Ejecutando el script anterior en MySQL banco de trabajo La consulta a myflixdb nos proporciona los siguientes resultados. Observe que los encabezados provienen de la primera consulta SELECT, aunque las filas inferiores corresponden a registros de películas.
| membership_number | full_names |
|---|---|
| 1 | Janet Jones |
| 2 | Janet Smith Jones |
| 3 | Robert Phil |
| 4 | Gloria Williams |
| 5 | Leonard Hofstadter |
| 6 | Sheldon Cooper |
| 7 | Rajesh Koothrappali |
| 8 | Leslie Winkle |
| 9 | Howard Wolowitz |
| 16 | 67% Guilty |
| 6 | Angels and Demons |
| 4 | Code Name Black |
| 5 | Daddy's Little Girls |
| 7 | Davinci Code |
| 2 | Forgetting Sarah Marshal |
| 9 | Honey mooners |
| 19 | movie 3 |
| 1 | Pirates of the Caribean 4 |
| 18 | sample movie |
| 17 | The Great Dictator |
| 3 | X-Men |




