MySQL UNION - Tutorial completo

Anonim

¿Qué es un sindicato?

Los sindicatos combinan los resultados de varias consultas SELECT en un conjunto de resultados consolidado.

Los únicos requisitos para que esto funcione es que el número de columnas debe ser el mismo de todas las consultas SELECT que deben combinarse.

Supongamos que tenemos dos tablas como sigue

Creemos ahora una consulta UNION para combinar ambas tablas usando DISTINCT

SELECT column1, column2 FROM `table1`UNION DISTINCTSELECT column1,column2 FROM `table2`;

Aquí se eliminan las filas duplicadas y solo se devuelven filas únicas.

Nota: MySQL usa la cláusula DISTINCT por defecto 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 ALLSELECT ` column1`,` column1` FROM `table2`;

Aquí se incluyen filas duplicadas y como usamos TODOS.

Por que usar sindicatos

Suponga que hay una falla en el diseño de su base de datos y está utilizando dos tablas diferentes diseñadas para el mismo propósito. Desea consolidar estas dos tablas en una mientras evita que los registros duplicados se arrastren en la nueva tabla. Puede utilizar UNION en tales casos.

Resumen

  • El comando UNION se utiliza para combinar más de un resultado de la consulta SELECT en una sola consulta que contiene filas de todas las consultas seleccionadas.
  • El número de columnas y tipos de datos en las sentencias SELECT 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 usa la cláusula DISTINCT como predeterminada al ejecutar consultas UNION si no se especifica nada.
  • La cláusula ALL se usa para devolver todas, incluso las filas duplicadas en la consulta UNION.

Ejemplos prácticos usando MySQL workbench

En nuestro myFlixDB vamos a combinar

número_de_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`UNIONSELECT `movie_id`,`title` FROM `movies`;

La ejecución del script anterior en MySQL workbench 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