Shrnutí :v tomto tutoriálu se naučíte používat SQLite UNION
operátor pro spojení sad výsledků dvou nebo více dotazů do jediné sady výsledků.
Úvod do SQLite UNION
operátor
Někdy je potřeba zkombinovat data z více tabulek do kompletní sady výsledků. Může to být pro tabulky s podobnými daty ve stejné databázi nebo možná potřebujete zkombinovat podobná data z více databází.
Chcete-li zkombinovat řádky ze dvou nebo více dotazů do jedné sady výsledků, použijte SQLite UNION
operátor. Následující text ilustruje základní syntaxi UNION
operátor:
query_1
UNION [ALL]
query_2
UNION [ALL]
query_3
...;
Code language: SQL (Structured Query Language) (sql)
Oba UNION
a UNION ALL
operátory spojují řádky ze sad výsledků do jediné sady výsledků. UNION
operátor odstraní odstranění duplicitních řádků, zatímco UNION ALL
operátor ne.
Protože UNION ALL
operátor neodstraňuje duplicitní řádky, běží rychleji než UNION
operátor.
Níže jsou uvedena pravidla pro sjednocení dat:
- Počet sloupců ve všech dotazech musí být stejný.
- Odpovídající sloupce musí mít kompatibilní datové typy.
- Názvy sloupců prvního dotazu určují názvy sloupců kombinované sady výsledků.
GROUP BY
aHAVING
klauzule se aplikují na každý jednotlivý dotaz, nikoli na konečnou sadu výsledků.- Položka
ORDER BY
klauzule se použije na kombinovanou sadu výsledků, nikoli na jednotlivou sadu výsledků.
Všimněte si, že rozdíl mezi UNION
a JOIN
např. INNER JOIN
nebo LEFT JOIN
je to JOIN
klauzule kombinuje sloupce z více souvisejících tabulek, zatímco UNION
kombinuje řádky z více podobných tabulek.
Předpokládejme, že máme dvě tabulky t1 a t2 s následujícími strukturami:
CREATE TABLE t1(
v1 INT
);
INSERT INTO t1(v1)
VALUES(1),(2),(3);
CREATE TABLE t2(
v2 INT
);
INSERT INTO t2(v2)
VALUES(2),(3),(4);
Code language: SQL (Structured Query Language) (sql)
Následující příkaz kombinuje sady výsledků tabulky t1 a t2 pomocí UNION
operátor:
SELECT v1
FROM t1
UNION
SELECT v2
FROM t2;
Code language: SQL (Structured Query Language) (sql)
Zde je výstup:
Následující obrázek ilustruje UNION
provoz tabulek t1 a t2:
Následující příkaz kombinuje sady výsledků tabulky t1 a t2 pomocí UNION ALL
operátor:
SELECT v1
FROM t1
UNION ALL
SELECT v2
FROM t2;
Code language: SQL (Structured Query Language) (sql)
Následující obrázek ukazuje výstup:
Následující obrázek ilustruje UNION ALL
provoz výsledkových sad tabulek t1 a t2:
SQLite UNION
příklady
Podívejme se na několik příkladů použití UNION
operátor.
1) SQLite UNION
příklad
Tento příkaz používá UNION
operátora sloučit jména zaměstnanců a zákazníků do jednoho seznamu:
SELECT FirstName, LastName, 'Employee' AS Type
FROM employees
UNION
SELECT FirstName, LastName, 'Customer'
FROM customers;
Code language: SQL (Structured Query Language) (sql)
Zde je výstup:
2) SQLite UNION
pomocí ORDER BY
příklad
Tento příklad používá UNION
operátora spojit jména zaměstnanců a zákazníků do jednoho seznamu. Kromě toho používá ORDER BY
klauzule k řazení seznamu jmen podle jména a příjmení.
SELECT FirstName, LastName, 'Employee' AS Type
FROM employees
UNION
SELECT FirstName, LastName, 'Customer'
FROM customers
ORDER BY FirstName, LastName;
Code language: SQL (Structured Query Language) (sql)
Zde je výstup:
V tomto tutoriálu jste se naučili používat SQLite UNION
operátor pro spojení řádků ze sad výsledků do jediné sady výsledků. Také jste se dozvěděli rozdíly mezi UNION
a UNION ALL
operátory.