MySQL UNION - täielik õpetus

Anonim

Mis on liit?

Ametiühingud ühendavad mitme SELECT päringu tulemused konsolideeritud tulemuste komplektiks.

Ainsad nõuded selle toimimiseks on see, et veergude arv peaks olema sama kõigi ühendatavate SELECT-päringute puhul.

Oletame, et meil on kaks järgmist tabelit

Loome nüüd UNIONi päringu, mis ühendab mõlemad tabelid DISTINCT abil

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

Siin eemaldatakse duplikaatread ja tagastatakse ainult unikaalsed read.

Märkus. Kui midagi pole määratud, kasutab MySQL vaikimisi UNIST-päringute täitmisel klauslit DISTINCT.

Loome nüüd UNIONi päringu, mis ühendab mõlemad tabelid KÕIK abil

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

Siin on duplikaatread lisatud ja kuna me kasutame kõiki.

Miks kasutada ametiühinguid

Oletame, et teie andmebaasi kujunduses on viga ja kasutate kahte erinevat tabelit, mis on mõeldud samaks otstarbeks. Soovite koondada need kaks tabelit ühte, jättes samas dubleerimata kirjed uude tabelisse. Sellistel juhtudel saate kasutada UNION-i.

Kokkuvõte

  • UNION-käsku kasutatakse mitme SELECT-päringu tulemuse ühendamiseks ühte päringusse, mis sisaldab ridu kõigist valitud päringutest.
  • SELECT-käskude veergude ja andmetüüpide arv peab käsu UNION toimimiseks olema sama.
  • DISTINCT-klauslit kasutatakse UNIONi päringutulemite komplekti duplikaatide väärtuste kõrvaldamiseks. MySQL kasutab UNIONi päringute täitmisel vaikimisi klauslit DISTINCT, kui midagi pole täpsustatud.
  • Klauslit ALL kasutatakse kõigi UNIONi päringu isegi duplikaatridade tagastamiseks.

Praktilised näited MySQL-i töölaua kasutamisest

Meie myFlixDB võimaldab kombineerida

liikmelisuse_number ja täisnimed liikmete tabelist

koos

movie_id ja pealkiri filmitabelist

Saame kasutada järgmist päringut

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

Ülaltoodud skripti käivitamine MySQL-i töölaual myflixdb vastu annab meile järgmised tulemused.

 
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