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

MySQL UNIJAMySQL UNIJA

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.

Union-Distinct

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.

Savez-Sve

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