Operator UNION se uporablja za združevanje nabora rezultatov dveh ali več SELECT stavkov. Vsak SELECT stavek znotraj UNION mora imeti enako število stolpcev in tudi stolpci morajo imeti podobne vrste podatkov. Stolpci v vsakem SELECT stavku morajo bit v istem vrstnem redu. Za primer bomo ustvarili dve enaki tabeli, ki se bosta imenovali prva in druga.
CREATE TABLE prva ( id INT AUTO_INCREMENT PRIMARY KEY, prvi_vpis VARCHAR(255), drugi_vpis VARCHAR(255) );
CREATE TABLE druga ( id INT AUTO_INCREMENT PRIMARY KEY, prvi_vpis VARCHAR(255), drugi_vpis VARCHAR(255) );
Najprej vpišimo podatke v prvo tabelo:
INSERT INTO prva (prvi_vpis, drugi_vpis) VALUES ('Banane', 'Kivi'), ('Borovnice', 'Jagode'), ('Jabolka', 'Hruške'), ('Breskve', 'Marelice'), ('Češnje', 'Višnje');
id | prvi_vpis | drugi_vpis |
---|---|---|
1 | Banane | Kivi |
2 | Borovnice | Jagode |
3 | Jabolka | Hruške |
4 | Breskve | Marelice |
5 | Češnje | Višnje |
In še v drugo:
INSERT INTO druga (prvi_vpis, drugi_vpis) VALUES ('Kalkulator', 'Računalnik'), ('Telefon', 'Tablica'), ('Monitor', 'Televizija'), ('Sprejemnik', 'Oddajnik'), ('Analogno', 'Digitalno');
id | prvi_vpis | drugi_vpis |
---|---|---|
1 | Kalkulator | Računalnik |
2 | Telefon | Tablica |
3 | Monitor | Televizija |
4 | Sprejemnik | Oddajnik |
5 | Analogno | Digitalno |
Naslednji SQL stavek bo vrnil različna mesta obeh tabel. Če imamo v tabeli zapisana ista imena, bo vsak vpis naveden samo enkrat, ker UNION izbere samo različne vrednosti. V primeru, da izberemo UNION ALL prikaže tudi podvojene vrednosti.
SELECT prvi_vpis FROM prva UNION SELECT prvi_vpis FROM druga ORDER BY prvi_vpis;
Primer z UNION ALL, ki prikaže tudi podvojene vrednosti (v naši tabeli jih ni, zato ni nobene spremembe od zgornjega primera).
SELECT drugi_vpis FROM prva UNION ALL SELECT prvi_vpis FROM druga;
Naslednji SQL stavek vrne vpise iz določene vrstice iz obeh tabel.
SELECT prvi_vpis, drugi_vpis FROM prva WHERE drugi_vpis = 'Jagode' UNION SELECT prvi_vpis, drugi_vpis FROM druga WHERE drugi_vpis = 'Televizija' ORDER BY prvi_vpis;
Poglejmo si še zadnji primer, ki nam izpiše vse vpisane id-je.
SELECT id FROM prva UNION ALL SELECT id FROM druga;