MySQL UNION – Kompletan vodič
Što je Unija?
Unije kombiniraju rezultate više SELECT upita u konsolidirani skup rezultata.
Jedini uvjet da bi ovo radilo je da broj stupaca treba biti isti za sve SELECT upite koje je potrebno kombinirati.
Pretpostavimo da imamo dvije tablice kako slijedi
Kreirajmo sada UNION upit za kombiniranje obje tablice koristeći DISTINCT
SELECT column1, column2 FROM `table1` UNION DISTINCT SELECT column1,column2 FROM `table2`;
Ovdje se duplicirani retci uklanjaju i vraćaju se samo jedinstveni retci.
Bilješka: MySQL koristi klauzulu DISTINCT kao zadanu prilikom izvršavanja UNION upita ako ništa nije navedeno.
Kreirajmo sada UNION upit za kombiniranje obje tablice koristeći ALL
SELECT `column1`,` column1` FROM `table1` UNION ALL SELECT ` column1`,` column1` FROM `table2`;
Ovdje su uključeni duplikati redaka i budući da koristimo ALL.
Zašto koristiti sindikate?
Pretpostavimo da postoji greška u dizajnu vaše baze podataka i da koristite dvije različite tablice za istu svrhu. Želite konsolidirati ove dvije tablice u jednu, a pritom izostaviti duple zapise da se uvuku u novu tablicu. U takvim slučajevima možete koristiti UNION.
rezime
- Naredba UNION koristi se za kombiniranje više od jednog rezultata SELECT upita u jedan upit koji sadrži retke iz svih upita za odabir.
- Broj stupaca i vrsta podataka u SELECT izjave moraju biti isti kako bi naredba UNION radila.
- 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 dupliciranih redaka u UNION upitu.
Korištenje praktičnih primjera MySQL radna tezga
U našem myFlixDB-u omogućujemo kombiniranje
membership_number i full_names iz tablice Members
s
movie_id i naslov iz tablice filmova
Možemo koristiti sljedeći upit
SELECT `membership_number`,`full_names` FROM `members` UNION SELECT `movie_id`,`title` FROM `movies`;
Izvršavanje gornje skripte u MySQL radna tezga u odnosu na 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 |