MySQL UNIÓN – Tutorial Completo
¿Qué es una Unión?
Las uniones combinan los resultados de múltiples consultas SELECT en un conjunto de resultados consolidado.
El único requisito para que esto funcione es que el número de columnas debe ser el mismo en todas las consultas SELECT que deben combinarse.
Supongamos que tenemos dos tablas de la siguiente manera.
Ahora creemos 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.
Ahora creemos una consulta UNION para combinar ambas tablas usando ALL
SELECT `column1`,` column1` FROM `table1` UNION ALL SELECT ` column1`,` column1` FROM `table2`;
Aquí se incluyen filas duplicadas y ya que usamos TODAS.
¿Por qué utilizar sindicatos?
Supongamos que hay un defecto 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 y evitar que los registros duplicados se introduzcan en la nueva tabla. Puede utilizar UNION en tales casos.
Resum
- El comando UNION se utiliza para combinar más de un resultado de consulta SELECT en una única consulta que contiene filas de todas las consultas seleccionadas.
- El número de columnas y tipos de datos en el SELECCIONAR declaraciones debe ser el mismo para que funcione el comando UNION.
- La cláusula DISTINCT se utiliza para eliminar valores duplicados del conjunto de resultados de la consulta UNION. MySQL utiliza la cláusula DISTINCT como predeterminada al ejecutar consultas UNION si no se especifica nada.
- La cláusula ALL se utiliza para devolver todas las filas duplicadas en la consulta UNION.
Ejemplos prácticos utilizando MySQL banco de trabajo
En nuestro myFlixDB combinemos
número_membresía y nombres_completos de la tabla de miembros
con
movie_id y título de la tabla de películas
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 contra myflixdb nos da los siguientes resultados que se muestran a continuación.
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 |