Operátor MySQL UNION
Operátor MySQL UNION
Operátor UNION
se používá ke spojení výsledné sady dvou nebo více
SELECT
příkazů.
- Každý
SELECT
příkaz uvnitřUNION
musí mít stejný počet sloupců - Sloupce musí mít také podobné datové typy
- Sloupce v každém
SELECT
příkazu musí být také ve stejném pořadí
Syntaxe UNION
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
UNION ALL Syntaxe
Operátor UNION
ve výchozím nastavení vybírá pouze odlišné hodnoty. Chcete-li povolit duplicitní hodnoty, použijte UNION ALL
:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
Poznámka: Názvy sloupců v sadě výsledků jsou obvykle stejné jako názvy sloupců v prvním SELECT
příkazu.
Demo databáze
V tomto tutoriálu použijeme známou ukázkovou databázi Northwind.
Níže je uveden výběr z tabulky „Zákazníci“:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
A výběr z tabulky "Dodavatelé":
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | London | EC1 4SD | UK |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
Příklad SQL UNION
Následující příkaz SQL vrací města (pouze odlišné hodnoty) z tabulky "Zákazníci" i "Dodavatelé":
Příklad
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
Poznámka: Pokud mají někteří zákazníci nebo dodavatelé stejné město, bude každé město uvedeno pouze jednou, protože UNION
vybírá pouze odlišné hodnoty. Použijte
UNION ALL
také k výběru duplicitních hodnot!
SQL UNION ALL Příklad
Následující příkaz SQL vrací města (také duplicitní hodnoty) z tabulky "Zákazníci" i "Dodavatelé":
Příklad
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
SQL UNION s WHERE
Následující příkaz SQL vrací německá města (pouze odlišné hodnoty) z tabulky "Zákazníci" i "Dodavatelé":
Příklad
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
SQL UNION VŠE s WHERE
Následující příkaz SQL vrací německá města (také duplicitní hodnoty) z tabulky "Zákazníci" i "Dodavatelé":
Příklad
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
Další příklad UNION
Následující příkaz SQL uvádí všechny zákazníky a dodavatele:
Příklad
SELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers;
Všimněte si výše uvedeného "AS Type" - je to alias. Aliasy SQL se používají k přidělení dočasného názvu tabulce nebo sloupci. Alias existuje pouze po dobu trvání dotazu. Zde jsme tedy vytvořili dočasný sloupec s názvem "Typ", který uvádí, zda je kontaktní osoba "Zákazník" nebo "Dodavatel".