MySQL UNION - Popolna vadnica

Anonim

Kaj je zveza?

Sindikati združujejo rezultate iz več poizvedb SELECT v konsolidirani nabor rezultatov.

Edina zahteva, da to deluje, je, da mora biti število stolpcev enako pri vseh poizvedbah SELECT, ki jih je treba kombinirati.

Recimo, da imamo dve tabeli, kot sledi

Ustvarimo zdaj poizvedbo UNION, ki združuje obe tabeli s pomočjo DISTINCT

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

Tu se podvojene vrstice odstranijo in vrnejo se samo edinstvene vrstice.

Opomba: MySQL pri izvajanju poizvedb UNION privzeto uporablja stavek DISTINCT, če ni določeno nič.

Ustvarimo zdaj poizvedbo UNION, ki združuje obe tabeli z uporabo ALL

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

Tukaj so podvojene vrstice in ker uporabljamo VSE.

Zakaj uporabljati sindikate

Recimo, da je pri zasnovi vaše baze podatkov napaka in uporabljate dve različni tabeli, namenjeni za isti namen. Ti dve tabeli želite združiti v eno, pri tem pa izpustiti vse podvojene zapise, da se ne bi prikradli v novo tabelo. V takih primerih lahko uporabite UNION.

Povzetek

  • Ukaz UNION se uporablja za združevanje več rezultatov poizvedbe SELECT v eno poizvedbo, ki vsebuje vrstice iz vseh izbranih poizvedb.
  • Število stolpcev in podatkovnih vrst v stavkih SELECT mora biti enako, da lahko deluje ukaz UNION.
  • Stavek DISTINCT se uporablja za odstranjevanje podvojenih vrednosti iz nabora rezultatov poizvedbe UNION. MySQL pri izvajanju poizvedb UNION uporablja privzeto stavek DISTINCT, če ni določeno nič.
  • Stavek ALL se uporablja za vrnitev vseh celo podvojenih vrstic v poizvedbi UNION.

Praktični primeri uporabe delovne mize MySQL

V našem myFlixDB omogoča kombiniranje

member_number in full_names iz tabele Members

s

movie_id in naslov iz tabele filmov

Lahko uporabimo naslednjo poizvedbo

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

Izvedba zgornjega skripta v delovnem okolju MySQL proti myflixdb nam da naslednje rezultate, prikazane spodaj.

 
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