MySQL UNION - kompletní výukový program

Anonim

Co je to unie?

Odbory kombinují výsledky z více dotazů SELECT do konsolidované sady výsledků.

Jediným požadavkem, aby to fungovalo, je to, že počet sloupců by měl být stejný ze všech dotazů SELECT, které je třeba kombinovat.

Předpokládejme, že máme dvě tabulky následovně

Pojďme nyní vytvořit dotaz UNION, který kombinuje obě tabulky pomocí DISTINCT

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

Zde jsou odstraněny duplicitní řádky a jsou vráceny pouze jedinečné řádky.

Poznámka: MySQL používá klauzuli DISTINCT jako výchozí při provádění dotazů UNION, pokud není uvedeno nic.

Pojďme nyní vytvořit dotaz UNION, který kombinuje obě tabulky pomocí ALL

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

Zde jsou zahrnuty duplicitní řádky a protože používáme ALL.

Proč používat odbory

Předpokládejme, že v návrhu databáze je chyba a používáte dvě různé tabulky určené pro stejný účel. Chcete sloučit tyto dvě tabulky do jedné a zároveň vynechat duplicitní záznamy z plíživé do nové tabulky. V takových případech můžete použít UNION.

souhrn

  • Příkaz UNION se používá ke kombinaci více než jednoho výsledku dotazu SELECT do jednoho dotazu, který obsahuje řádky ze všech vybraných dotazů.
  • Aby fungoval příkaz UNION, musí být počet sloupců a datových typů v příkazech SELECT stejný.
  • Klauzule DISTINCT se používá k odstranění duplicitních hodnot ze sady výsledků dotazu UNION. MySQL používá klauzuli DISTINCT jako výchozí při provádění dotazů UNION, pokud není uvedeno nic.
  • Klauzule ALL se používá k vrácení všech i duplicitních řádků v dotazu UNION.

Praktické příklady využívající pracovní plochu MySQL

V našem myFlixDB umožňuje kombinovat

členské_číslo a celé_jména z tabulky Členové

s

film_id a název z tabulky filmů

Můžeme použít následující dotaz

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

Provedení výše uvedeného skriptu v pracovní ploše MySQL proti myflixdb nám dává následující výsledky uvedené níže.

 
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