V tomto návode sa naučíme, ako použiť klauzulu SQL UNION na spojenie výsledku z dvoch alebo viacerých príkazov SELECT do jednej sady výsledkov.
Nasledujúca ilustrácia zobrazuje prehľad dotazu SQL UNION:
Syntax SQL UNION
Nasledujúci text ukazuje syntax pre kombináciu dvoch príkazov select pomocou klauzuly UNION:
VYBRAŤ
stĺpec_1,
stĺpec_2,
...stĺpec_N
OD
tbl_1
UNION
VYBRAŤ
stĺpec_1,
stĺpec_2,
...stĺpec_N
OD
tbl_2;
Pred vykonaním zjednocovacieho dotazu musia byť splnené nasledujúce požiadavky:
- Počet stĺpcov v každom príkaze select musí byť rovnaký.
- Stĺpec na rovnakej pozícii v každom príkaze select musí mať podobný typ údajov.
- Poradie stĺpcov musí byť správne vo všetkých vybraných príkazoch.
Ukážme si, ako môžeme použiť dopyt UNION so skutočnou tabuľkou.
Stôl 1:
Nasledujúci text zobrazuje stĺpce a údaje v prvej tabuľke:
id|názov_servera |adresa |inštalovaná_verzia|
--+-------------+--------------+-----------------+
1|SQL Server |localhost:1433|15.0 |
2|Elasticsearch|localhost:9200|8.4.3 |
3|Redis |localhost:6379|6.0 |
4|PostgreSQL |localhost:5432|14.5 |
Tabuľka 2:
Štruktúra a záznamy druhej tabuľky sú uvedené v nasledujúcom texte:
id|nástroj |verzia|licencovaná |--+----------------------------+-------+----------- +
1|SQL Server Management Studio|18.0 |komerčné|
2|Kibana |17.7.7 |zadarmo |
3|DBeaver |22.2 |Podnik|
4|DataGrip |2022.2 |Komerčné|
SQL UNION tabuľky
Môžeme vykonať operáciu UNION na hodnotách oboch tabuliek, ako je znázornené v nasledujúcom dotaze:
VYBRAŤNÁZOV SERVERA,
INSTALLED_VERSION
OD
STACK_MAPPING
UNION
VYBRAŤ
NÁSTROJ,
VERZIA
OD
KONEKTOR;
To by malo spojiť dotazy a vrátiť tabuľku takto:
názov_servera |inštalovaná_verzia|----------------------------+-----------------+
SQL Server |15.0 |
Elasticsearch |8.4.3 |
Redis |6.0 |
PostgreSQL |14.5 |
SQL Server Management Studio|18.0 |
Kibana |17.7. |
DBeaver |22.2 |
DataGrip |2022.2 |
Záver
Tento článok poskytuje základy práce s klauzulou UNION v SQL na spojenie výsledkov dvoch alebo viacerých príkazov SELECT. Neváhajte a pozrite si ďalšie návody, kde nájdete viac.