MySQL UNION – Tutorial complet
Ce este o Uniune?
Uniunile combină rezultatele din mai multe interogări SELECT într-un set de rezultate consolidat.
Singurele cerințe pentru ca aceasta 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 DISTINCT SELECT column1,column2 FROM `table2`;
Aici rândurile duplicate sunt eliminate și sunt returnate 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 ALL SELECT ` column1`,` column1` FROM `table2`;
Aici sunt incluse rândurile duplicate și deoarece folosim ALL.
De ce să folosiți sindicatele?
Să presupunem că există un defect în designul bazei de date și că utilizați două tabele diferite destinate aceluiași scop. Doriți să consolidați aceste două tabele într-unul singur, omițând în același timp orice înregistrări duplicate să se introducă în noul tabel. Puteți folosi UNION în astfel de cazuri.
Rezumat
- Comanda UNION este utilizată pentru a combina mai multe rezultate de interogare SELECT într-o singură interogare care conține rânduri din toate interogările selectate.
- Numărul de coloane și tipuri de date din Instrucțiuni SELECT trebuie să fie acelaș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 folosită pentru a returna toate, chiar și rândurile duplicate, din interogarea UNION.
Exemple practice de utilizare MySQL banc de lucru
În myFlixDB, vă permitem să combinăm
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` UNION SELECT `movie_id`,`title` FROM `movies`;
Executarea scriptului de mai sus în MySQL banc de lucru î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 |