Operator UNION służy do łączenia zestawu wyników dwóch lub więcej instrukcji SELECT.
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2
Operator UNION domyślnie wybiera tylko odrębne wartości. Aby zezwolić na powielanie wartości, użyj UNION ALL:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2
W tym samouczku użyjemy słynnej przykładowej bazy danych „Northwind”.
Poniżej znajduje się przykład z tabeli „Customers” („Klienci”):
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. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Oraz próbka z tabeli „Suppliers” („Dostawcy”):
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
---|---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
5 | Cooperativa de Quesos 'Las Cabras' | Antonio del Valle Saavedra | Calle del Rosal 4 | Oviedo | 33007 | Spain | (98) 598 76 54 |
Poniższa instrukcja SQL wybiera miasta (tylko różne wartości) z tabel Klienci i Dostawcy:
Run SQLSELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City
Następująca instrukcja SQL wybiera miasta (również zduplikowane wartości) z obu tabel Klienci i Dostawcy:
Run SQLSELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City
Poniższa instrukcja SQL wybiera niemieckie miasta (tylko inne wartości) zarówno z tabeli Klienci, jak i Dostawcy:
Run SQLSELECT City, Country FROM Customers
WHERE Country = 'Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country = 'Germany'
ORDER BY City
Poniższa instrukcja SQL wybiera niemieckie miasta (również zduplikowane wartości) z obu tabel Klienci i Dostawcy:
Run SQLSELECT City, Country FROM Customers
WHERE Country = 'Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country = 'Germany'
ORDER BY City
Poniższa instrukcja SQL zawiera listę wszystkich klientów i dostawców:
Run SQLSELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers
Zauważ, że „AS Type” powyżej jest aliasem. Aliasy SQL służą do nadawania tabeli lub kolumnie tymczasowej nazwy. Alias istnieje tylko przez czas trwania żądania. Dlatego tutaj utworzyliśmy tymczasową kolumnę o nazwie „Type”, która wskazuje, czy kontakt jest „Klientem”, czy „Dostawcą”.