SQL nám poskytuje operátor UNION, který nám umožňuje kombinovat sady výsledků dvou nebo více příkazů SELECT do jediné sady výsledků. V SQL existují tři hlavní typy operátorů UNION: UNION, UNION ALL a UNION DISTINCT.
Tento výukový program zkoumá tyto tři typy UNION a poskytuje reálné a praktické příklady práce s nimi.
POZNÁMKA: V tomto příkladu použijeme ukázkovou databázi Sakila pro demonstrační účely. Před provedením těchto příkazů se ujistěte, že jej máte nainstalovaný. Chcete-li se dozvědět více, můžete se podívat na náš tutoriál.
Operátor SQL UNION
Jak již bylo zmíněno, operátor UNION nám umožňuje zkombinovat sadu výsledků dvou nebo více příkazů select a odstranit duplicitní hodnoty. Syntaxe operátoru UNION je následující:
VYBRAT sloupec1, sloupec2, ...
Z tabulky 1
SVAZ
VYBRAT sloupec1, sloupec2, ...
Z tabulky2;
V předchozím příkladu syntaxe používáme příkazy SELECT k načtení dat ze zadaných tabulek. Operátor UNION pak zkombinuje dvě sady výsledků do jedné sady. Vezměme si příklad, jak to udělat pomocí tabulky aktérů, která je definována v databázi Sakila.
Zvažte následující příklad dotazu, který načte křestní jméno a příjmení aktérů z tabulky aktérů a tabulky zákazníka:
SELECT jméno, příjmeníOD herce
SVAZ
SELECT jméno, příjmení
OD zákazníka; SELECT jméno, příjmení
OD herce
SVAZ
SELECT jméno, příjmení
OD zákazníka;
Předchozí dotaz provede křestní jména a příjmení z tabulek aktér a zákazník a vrátí hodnoty jako jeden výsledek.
Příklad výstupu je následující:
Operátor SQL UNION ALL
Na rozdíl od operátoru UNION, který odstraňuje duplicitní hodnoty ze sady výsledků, operátor UNION vrací všechny řádky tabulek včetně duplikátů.
Syntaxe je následující:
VYBRAT sloupec1, sloupec2, ...Z tabulky 1
UNION VŠECHNY
VYBRAT sloupec1, sloupec2, ...
Z tabulky2;
Následující příklad vybere jméno a příjmení z tabulek herců a zákazníků v databázi Sakila:
OD herce
UNION VŠECHNY
SELECT jméno, příjmení
OD zákazníka;
Příklad výstupu je následující:
Operátor SQL UNION DISTINCT
Dalším typem odborového operátora je UNION DISTINCT. Tento operátor je jednoduše duplikátem operátoru UNION, který provádí podobnou akci.
Syntaxe je následující:
VYBRAT sloupec1, sloupec2, ...Z tabulky 1
UNION VÝZNAM
VYBRAT sloupec1, sloupec2, ...
Z tabulky2;
Příkazy SELECT načítají data ze zadaných tabulek a operátor UNION DISTINCT zkombinuje sady výsledků do jediné sady výsledků, která obsahuje jedinečné řádky.
V příkladu databáze Sakila můžeme spustit následující příkaz:
SELECT jméno, příjmeníOD herce
UNION VÝZNAM
SELECT jméno, příjmení
OD zákazníka;
To by mělo vrátit podobný výsledek jako operátor UNION.
Závěr
Naučili jsme se pracovat s různými typy UNION v SQL. Operátor UNION zkombinuje sadu výsledků dvou nebo více příkazů select a odstraní duplicitní záznamy. UNION ALL provede podobnou akci, ale zahrnuje všechny duplicitní řádky. A konečně UNION DISTINCT je identický s nativním operátorem UNION.