MySQL UNION - Kompletný návod

Anonim

Č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