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 |