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

MySQL UNIONINMySQL UNIONIN

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.

Union-Distinct

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.

Unioni-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