MySQL UNION - täydellinen opetusohjelma

Anonim

Mikä on liitto?

Ammattiliitot yhdistävät useiden SELECT-kyselyjen tulokset yhdistetyksi tulosjoukoksi.

Ainoat vaatimukset, jotta tämä toimisi, on, että sarakkeiden lukumäärän on oltava sama kaikista SELECT-kyselyistä, jotka on yhdistettävä.

Oletetaan, että meillä on kaksi taulukkoa seuraavasti

Luodaan nyt UNION-kysely, joka yhdistää molemmat taulukot DISTINCT-toiminnolla

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

Täällä kaksoiskappaleet poistetaan ja vain yksilölliset rivit palautetaan.

Huomaa: MySQL käyttää DISTINCT-lauseketta oletuksena, kun suoritetaan UNION-kyselyitä, jos mitään ei ole määritetty.

Luodaan nyt UNION-kysely, joka yhdistää molemmat taulukot ALL: lla

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

Tässä mukana ovat kaksoisrivit ja koska käytämme KAIKKI.

Miksi käyttää ammattiliittoja

Oletetaan, että tietokannan suunnittelussa on virhe ja käytät kahta eri taulua, jotka on tarkoitettu samaan tarkoitukseen. Haluat yhdistää nämä kaksi taulukkoa yhdeksi ja jättää kaikki päällekkäiset tietueet hiipimättä uuteen taulukkoon. Voit käyttää UNIONia tällaisissa tapauksissa.

Yhteenveto

  • UNION-komentoa käytetään yhdistämään useampi kuin yksi SELECT-kyselytulos yhdeksi kysely sisältää rivit kaikista valituista kyselyistä.
  • SELECT-käskyjen sarakkeiden ja tietotyyppien määrän on oltava samat, jotta UNION-komento toimisi.
  • DISTINCT-lauseketta käytetään poistamaan päällekkäiset arvot UNION-kyselyn tulosjoukosta. MySQL käyttää DISTINCT-lauseketta oletusarvona suoritettaessa UNION-kyselyitä, jos mitään ei ole määritetty.
  • ALL-lauseketta käytetään palauttamaan kaikki kaksoisrivit UNION-kyselyssä.

Käytännön esimerkkejä MySQL-työpöydän käytöstä

MyFlixDB: n avulla voimme yhdistää

jäsenyys_numero ja täydelliset_nimet Jäsentaulukosta

kanssa

movie_id ja otsikko elokuvataulukosta

Voimme käyttää seuraavaa kyselyä

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

Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä myflixdb: tä vastaan ​​antaa meille seuraavat tulokset.

 
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