UNION i UNION ALL dva su najbitnija SQL operatora koja se koriste u bazi podataka za kombiniranje skupa rezultata iz više tablica. Ovi nam operatori omogućuju korištenje višestrukih SELECT upita, dohvaćanje željenih rezultata i njihovo kombiniranje u konačni izlaz . U ovom ćemo članku vidjeti kako se međusobno razlikuju. Prije nego napravimo usporedbu, ukratko ćemo razgovarati o ovim operaterima.
Što je operator Unije?
Operator unije u MySQL-u omogućuje nam kombiniranje dva ili više rezultata iz više SELECT upita u jedan skup rezultata. Ima zadanu značajku za uklonite duplicirane retke sa stolova. Ova sintaksa operatora uvijek koristi naziv stupca u prvoj SELECT izjavi kao imena stupaca izlaza.
MySQL Sindikat mora poštovati ova osnovna pravila:
- Broj i redoslijed stupaca treba biti isti u svim upitima.
- Odgovarajući položaj stupaca svakog upita odabira mora imati kompatibilnu vrstu podataka.
- Ime stupca odabrano u različitim SELECT upitima mora biti u istom redoslijedu.
- Naziv stupca prvog SELECT upita bit će naziv stupca izlaza.
NAPOMENA: Moramo znati da su Union i Join različite.
- JOIN kombinira podatke iz više različitih tablica, dok UNION kombinira podatke iz više sličnih tablica.
- JOIN dodaje izlaz vodoravno, dok UNION kombinira skup rezultata okomito.
Donji vizualni prikaz to jasnije objašnjava:
Kako biste pročitali više informacija o Union operateru, kliknite ovdje.
Što je Union All?
Operator UNION ALL kombinira dva ili više rezultata iz više SELECT upita i vraća sve zapise u jedan skup rezultata. Ne uklanja duplicirane retke iz izlaza naredbi SELECT.
Možemo to razumjeti pomoću sljedećeg vizualnog prikaza.
Union protiv Union All Operator
Sljedeća usporedna tablica na brz način objašnjava njihove glavne razlike:
UNIJA | UNIJA SVE |
---|---|
Kombinira skup rezultata iz više tablica i vraća različite zapise u jedan skup rezultata. | Kombinira skup rezultata iz više tablica i vraća sve zapise u jedan skup rezultata. |
Slijedi osnovno sintaksa operatera UNION: SELECT column_list FROM table1 UNIJA SELECT column_list FROM table2; | Slijedi osnovno sintaksa operatera UNION ALL: SELECT column_list FROM table1 UNIJA SVE SELECT column_list FROM table2; |
Ima zadanu značajku za uklanjanje duplih redaka iz izlaza. | Nema značajke za uklanjanje duplih redaka iz izlaza. |
Njegovo performanse su spore jer je potrebno vrijeme da se pronađu i potom uklone dvostruki zapisi. | Njegovo performanse su brze jer ne eliminira duplicirane retke. |
Većina korisnika baze podataka radije koristi ovaj operator. | Većina korisnika baze podataka ne preferira korištenje ovog operatora. |
Union i Union All Primjer
Razmotrimo razlike između operatora Union i Union All kroz primjer. Pretpostavimo da imamo tablicu imena ' Student 'i' Student2 ' koji sadrži sljedeće podatke:
Stol: Student
Tablica: Student2
Sljedeći SQL iskaz vraća različita imena gradova iz obje tablice pomoću upita UNION:
SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City;
Nakon izvršenja gornje naredbe, dobit ćemo donji izlaz jer operator Union vraća samo različite vrijednosti.
Sljedeći SQL iskaz se vraća sva imena gradova uključujući duplikate iz obje tablice pomoću upita UNION ALL:
SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City;
Nakon izvršenja gornje naredbe, dobit ćemo izlaz u nastavku jer operator Union All vraća cijele zapise bez eliminiranja različitih vrijednosti.