MySQL UNION - Tutorial complet

Anonim

Ce este o uniune?

Sindicatele combină rezultatele de la mai multe interogări SELECT într-un set de rezultate consolidat.

Singurele cerințe pentru ca acest lucru să funcționeze este ca numărul de coloane să fie același din toate interogările SELECT care trebuie combinate.

Să presupunem că avem două tabele după cum urmează

Să creăm acum o interogare UNION pentru a combina ambele tabele folosind DISTINCT

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

Aici rândurile duplicate sunt eliminate și se returnează numai rândurile unice.

Notă: MySQL folosește clauza DISTINCT ca implicită atunci când execută interogări UNION dacă nu este specificat nimic.

Să creăm acum o interogare UNION pentru a combina ambele tabele folosind ALL

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

Aici sunt incluse rândurile duplicate și de vreme ce folosim TOATE.

De ce să folosim sindicatele

Să presupunem că există un defect în proiectarea bazei de date și că utilizați două tabele diferite destinate aceluiași scop. Doriți să consolidați aceste două tabele într-unul, omițând orice înregistrări duplicate de la pătrunderea în noul tabel. Puteți utiliza UNION în astfel de cazuri.

rezumat

  • Comanda UNION este utilizată pentru a combina mai multe rezultate ale interogării SELECT într-o singură interogare conținând rânduri din toate interogările selectate.
  • Numărul de coloane și tipuri de date din instrucțiunile SELECT trebuie să fie aceleași pentru ca comanda UNION să funcționeze.
  • Clauza DISTINCT este utilizată pentru a elimina valorile duplicate din setul de rezultate ale interogării UNION. MySQL folosește clauza DISTINCT ca implicită atunci când execută interogări UNION dacă nu este specificat nimic.
  • Clauza ALL este utilizată pentru a returna toate chiar și rândurile duplicate din interogarea UNION.

Exemple practice folosind bancul de lucru MySQL

În myFlixDB permite combinarea

membership_number și full_names din tabelul Members

cu

movie_id și titlul din tabelul de filme

Putem folosi următoarea interogare

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

Executarea scriptului de mai sus în MySQL workbench împotriva myflixdb ne oferă următoarele rezultate prezentate mai jos.

 
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