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ă

MySQL UNIUNEMySQL UNIUNE

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.

Unire-Distinct

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.

Unire-Toate

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