MySQL LIIT – täielik õpetus

Mis on liit?

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

Ainus nõue selle toimimiseks on see, et veergude arv peaks olema sama kõigis kombineeritavates SELECT päringutes.

Oletame, et meil on kaks järgmist tabelit

MySQL LIIDUMySQL LIIDU

Loome nüüd UNION-päringu, mis ühendab mõlemad tabelid, kasutades funktsiooni DISTINCT

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

Siin eemaldatakse topeltread ja tagastatakse ainult kordumatud read.

Liit-eriti

Märge: MySQL kasutab UNION-i päringute täitmisel vaikimisi klauslit DISTINCT, kui midagi pole määratud.

Loome nüüd UNION-päringu, mis ühendab mõlemad tabelid, kasutades KÕIK

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

Siin on kaasatud topeltread ja kuna me kasutame KÕIK.

Liit-Kõik

Miks kasutada ametiühinguid?

Oletame, et teie andmebaasi kujunduses on viga ja te kasutate kahte erinevat tabelit, mis on mõeldud samal eesmärgil. Soovite need kaks tabelit üheks koondada, jättes samal ajal välja kõik topeltkirjed uude tabelisse hiilimast. Sellistel juhtudel võite kasutada UNION-i.

kokkuvõte

  • UNION-käsku kasutatakse rohkem kui ühe SELECT-päringu tulemuste ühendamiseks üheks päringuks, mis sisaldab ridu kõigist valikupäringutest.
  • Veergude ja andmetüüpide arv VALI avaldused peab olema sama, et UNION-käsk töötaks.
  • Klauslit DISTINCT kasutatakse dubleerivate väärtuste kõrvaldamiseks UNION päringutulemite komplektist. MySQL kasutab UNION-i päringute täitmisel vaikimisi klauslit DISTINCT, kui midagi pole määratud.
  • Klauslit KÕIK kasutatakse kõigi isegi UNION-päringu dubleerivate ridade tagastamiseks.

Praktilised näited kasutamisest MySQL töölaud

Meie myFlixDB võimaldab kombineerida

liikme_number ja täisnimed Liikmete tabelist

koos

movie_id ja pealkiri filmide tabelist

Saame kasutada järgmist päringut

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

Ülaltoodud skripti käivitamine MySQL töölaud myflixdb vastu annab meile järgmised allpool näidatud 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