MySQL UNION - Kompletna lekcija

Anonim

Što je sindikat?

Sindikati kombiniraju rezultate iz više SELECT upita u objedinjeni skup rezultata.

Jedini preduvjeti da bi to funkcioniralo je da broj stupaca bude jednak iz svih SELECT upita koje treba kombinirati.

Pretpostavimo da imamo dvije tablice kako slijede

Stvorimo sada UNION upit za kombiniranje obje tablice pomoću DISTINCT-a

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

Ovdje se duplicirani retci uklanjaju i vraćaju se samo jedinstveni retci.

Napomena: MySQL koristi klauzulu DISTINCT kao zadanu prilikom izvršavanja UNION upita ako ništa nije navedeno.

Stvorimo sada UNION upit koji kombinira obje tablice koristeći ALL

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

Ovdje su uključeni duplicirani retci i budući da koristimo ALL.

Zašto koristiti sindikate

Pretpostavimo da postoji nedostatak u dizajnu vaše baze podataka i da koristite dvije različite tablice namijenjene istoj svrsi. Želite objediniti ove dvije tablice u jednu, a izostaviti da se duplicirani zapisi uvuku u novu tablicu. U takvim slučajevima možete koristiti UNION.

Sažetak

  • Naredba UNION koristi se za kombiniranje više rezultata pretraživanja SELECT u jedan upit koji sadrži retke svih odabranih upita.
  • Broj stupaca i vrsta podataka u naredbama SELECT mora biti jednak kako bi naredba UNION mogla raditi.
  • Klauzula DISTINCT koristi se za uklanjanje dvostrukih vrijednosti iz skupa rezultata upita UNION. MySQL koristi klauzulu DISTINCT kao zadanu prilikom izvršavanja UNION upita ako ništa nije navedeno.
  • Klauzula ALL koristi se za vraćanje svih čak i duplikata redaka u UNION upitu.

Praktični primjeri korištenja MySQL radnog stola

U našem myFlixDB omogućuje kombiniranje

broj_članova i puna_imena iz tablice Članovi

s

movie_id i naslov iz tablice filmova

Možemo upotrijebiti sljedeći upit

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

Izvršavanje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam sljedeće rezultate prikazane u nastavku.

 
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