SQL UNION

SQL UNION


    


DEFINICJA

Za pomocą polecenia UNION możemy połączyć wyniki z dwóch lub więcej zapytań. Warunkiem jest jednak to żeby łączone tabele miały taką samą ilość kolumn a kolumny takie same typy. Istnieją dwa sposoby łączenia przy pomocy polecenia UNION. Pierwszy z nich to łączenie tylko uniakalnych wartości i do tego sposobu wykorzystamy polecenie UNION a drugim z nich to łączenie wszystkich rekordów niezależnie czy się powtarzają czy nie i tutaj wykorzystamy polecenie UNION ALL. Dla lepszego zrozumienia poniżej infografika i przykłady.

SQL UNION

sql union

SQL UNION ALL

sql union all

SQL UNION składnia

SELECT
    nazwa_kolumny1 , nazwa_kolumny2 , …
FROM
    nazwa_tabeli1

UNION

SELECT
    nazwa_kolumny1 , nazwa_kolumny2 , …
FROM
    nazwa_tabeli2

Pamiętaj, UNION łączy dwa zapytania (zbiory) ale wyświetla tylko unikalne wartości.

Natomiast UNION ALL wyświetla wszystkie rekordy z łączonych zapytań.

SQL UNION ALL składnia

SELECT
    nazwa_kolumny1 , nazwa_kolumny2 , …
FROM
    nazwa_tabeli1

UNION ALL

SELECT
    nazwa_kolumny1 , nazwa_kolumny2 , …
FROM
    nazwa_tabeli2

 


Przykład zastosowania UNION (baza Adventureworks)

Stwórz zbiór z Imion i Nazwisk osób z tabeli Person.Person, których nazwisko zaczynają się na I i U. Wyświetl tylko unikalne wartości. Wyniki posortuj wg Nazwiska rosnąco.

SELECT FirstName, LastName
FROM Person.Person
WHERE LastName like 'I%'

UNION

SELECT FirstName, LastName
FROM Person.Person
WHERE LastName like 'U%'

ORDER BY LastName

 


Przykład zastosowania UNION (baza Northwind)

Stwórz zbiór państw z których pochodzą klienci i dostawcy. Wyświetl tylko unikalne wartości. Wyniki posortuj rosnąco wg kraju.

SELECT Country FROM Customers
UNION
SELECT Country FROM Suppliers
ORDER BY Country

INFO: Zwróć uwagę, że do wyświetlenia unialnych wartości wykorzystamy polecenie UNION. Poprawne działanie naszego zapytania możemy zaobserwować na przykładzie państwa USA w tabeli Customers państwo USA występuje 13 razy natomiast w tabeli Suppliers 4 razy. W wynikach naszego zapytania pojawia się tylko raz co świadczy o tym że polecenie UNION zwraca tylko unikalne wartości.


Zobacz także: union-all , except , intersect