MySQL UNION - Tutorial completo

Anonim

O que é um sindicato?

Os sindicatos combinam os resultados de várias consultas SELECT em um conjunto de resultados consolidado.

Os únicos requisitos para que isso funcione é que o número de colunas deve ser o mesmo de todas as consultas SELECT que precisam ser combinadas.

Suponha que temos duas tabelas como segue

Vamos agora criar uma consulta UNION para combinar as duas tabelas usando DISTINCT

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

Aqui, as linhas duplicadas são removidas e apenas as linhas exclusivas são retornadas.

Nota: o MySQL usa a cláusula DISTINCT como padrão ao executar consultas UNION se nada for especificado.

Vamos agora criar uma consulta UNION para combinar as duas tabelas usando ALL

SELECT `column1`,` column1` FROM `table1`UNION ALLSELECT ` column1`,` column1` FROM `table2`;

Aqui, linhas duplicadas são incluídas e, uma vez que usamos ALL.

Por que usar sindicatos

Suponha que haja uma falha no design do seu banco de dados e você esteja usando duas tabelas diferentes destinadas ao mesmo propósito. Você deseja consolidar essas duas tabelas em uma, enquanto omite quaisquer registros duplicados que entrem na nova tabela. Você pode usar UNION em tais casos.

Resumo

  • O comando UNION é usado para combinar mais de um resultado da consulta SELECT em uma única consulta contendo linhas de todas as consultas selecionadas.
  • O número de colunas e tipos de dados nas instruções SELECT deve ser o mesmo para que o comando UNION funcione.
  • A cláusula DISTINCT é usada para eliminar valores duplicados do conjunto de resultados da consulta UNION. O MySQL usa a cláusula DISTINCT como padrão ao executar consultas UNION se nada for especificado.
  • A cláusula ALL é usada para retornar todas as linhas, até mesmo as duplicadas, na consulta UNION.

Exemplos práticos usando o ambiente de trabalho MySQL

Em nosso myFlixDB vamos combinar

Membership_number e full_names da tabela de membros

com

movie_id e título da tabela de filmes

Podemos usar a seguinte consulta

SELECT `membership_number`,`full_names` FROM `members`UNIONSELECT `movie_id`,`title` FROM `movies`;

Executar o script acima no ambiente de trabalho MySQL no myflixdb nos dá os seguintes resultados mostrados abaixo.

 
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