MySQL UNIONI – Täydellinen opetusohjelma
Mikä on Unioni?
Unionit yhdistävät useiden SELECT-kyselyiden tulokset konsolidoiduksi tulosjoukoksi.
Ainoa vaatimus tämän toimimiselle on se, että sarakkeiden lukumäärän tulee olla sama kaikista yhdistettävistä SELECT-kyselyistä.
Oletetaan, että meillä on kaksi taulukkoa seuraavasti
Luodaan nyt UNION-kysely, joka yhdistää molemmat taulukot DISTINCT:n avulla
SELECT column1, column2 FROM `table1` UNION DISTINCT SELECT column1,column2 FROM `table2`;
Tässä päällekkäiset rivit poistetaan ja vain yksilölliset rivit palautetaan.
Huomautus: MySQL käyttää DISTINCT-lausetta oletuksena suorittaessaan UNION-kyselyjä, jos mitään ei ole määritetty.
Luodaan nyt UNION-kysely, joka yhdistää molemmat taulukot käyttämällä KAIKKI
SELECT `column1`,` column1` FROM `table1` UNION ALL SELECT ` column1`,` column1` FROM `table2`;
Tässä on päällekkäiset rivit ja koska käytämme KAIKKI.
Miksi käyttää ammattiliittoja?
Oletetaan, että tietokannan suunnittelussa on virhe ja käytät kahta eri taulukkoa, jotka on tarkoitettu samaan tarkoitukseen. Haluat yhdistää nämä kaksi taulukkoa yhdeksi ja jättää kaikki tietueiden kaksoiskappaleet 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 kyselyksi, joka sisältää rivejä kaikista valintakyselyistä.
- Sarakkeiden ja tietotyyppien määrä SELECT-lauseet on oltava sama, jotta UNION-komento toimisi.
- DISTINCT-lausetta käytetään poistamaan päällekkäiset arvot UNION-kyselyn tulosjoukosta. MySQL käyttää DISTINCT-lausetta oletuksena suorittaessaan UNION-kyselyjä, jos mitään ei ole määritetty.
- ALL-lausetta käytetään palauttamaan kaikki jopa päällekkäiset rivit UNION-kyselyssä.
Käytännön esimerkkejä käytöstä MySQL työpöytä
MyFlixDB:ssämme voit yhdistää
Members_number ja full_names Jäsenet-taulukosta
with
movie_id ja title elokuvataulukosta
Voimme käyttää seuraavaa kyselyä
SELECT `membership_number`,`full_names` FROM `members` UNION SELECT `movie_id`,`title` FROM `movies`;
Suoritetaan yllä oleva komentosarja MySQL työpöytä myflixdb:tä vastaan antaa meille seuraavat alla näkyvät 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 |