Čo je to únia?
Odbory kombinujú výsledky z viacerých dotazov SELECT do konsolidovanej množiny výsledkov.
Jedinou požiadavkou na to, aby to fungovalo, je, aby bol počet stĺpcov rovnaký zo všetkých dotazov SELECT, ktoré je potrebné kombinovať.
Predpokladajme, že máme dve tabuľky nasledovne
Poďme teraz vytvoriť dotaz UNION na spojenie oboch tabuliek pomocou DISTINCT
SELECT column1, column2 FROM `table1`UNION DISTINCTSELECT column1,column2 FROM `table2`;
Tu sa odstránia duplicitné riadky a vrátia sa iba jedinečné riadky.
Poznámka: MySQL používa klauzulu DISTINCT ako predvolenú pri vykonávaní dotazov UNION, pokiaľ nie je uvedené nič.
Poďme teraz vytvoriť dotaz UNION na spojenie oboch tabuliek pomocou ALL
SELECT `column1`,` column1` FROM `table1`UNION ALLSELECT ` column1`,` column1` FROM `table2`;
Tu sú zahrnuté duplicitné riadky a keďže používame VŠETKY.
Prečo používať odbory
Predpokladajme, že v návrhu vašej databázy je chyba a že používate dve rôzne tabuľky určené na ten istý účel. Chcete tieto dve tabuľky skonsolidovať do jednej a zároveň vynechať duplicitné záznamy, aby sa plazili do novej tabuľky. V takýchto prípadoch môžete použiť program UNION.
Zhrnutie
- Príkaz UNION sa používa na kombinovanie viac ako jedného výsledku dotazu SELECT do jedného dotazu, ktorý obsahuje riadky zo všetkých výberových dotazov.
- Aby mohol príkaz UNION fungovať, musí byť počet stĺpcov a dátových typov vo príkazoch SELECT rovnaký.
- Klauzula DISTINCT sa používa na vylúčenie duplicitných hodnôt zo sady výsledkov dotazu UNION. MySQL používa klauzulu DISTINCT ako predvolenú pri vykonávaní dotazov UNION, pokiaľ nie je uvedené nič.
- Klauzula ALL sa používa na vrátenie všetkých dokonca duplicitných riadkov v dotaze UNION.
Praktické príklady využívajúce pracovný stôl MySQL
V našom myFlixDB umožňuje kombinovať
členské_číslo a celé_názvy z tabuľky Členovia
s
film_id a názov z tabuľky filmov
Môžeme použiť nasledujúci dotaz
SELECT `membership_number`,`full_names` FROM `members`UNIONSELECT `movie_id`,`title` FROM `movies`;
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti myflixdb nám dáva nasledujúce výsledky uvedené nižšie.
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 |