Jak działa UNION ALL w języku SQL? Przykłady zastosowania

Jak działa UNION ALL w języku SQL? Przykłady zastosowania

W SQL istnieje wiele sposobów na łączenie wyników zapytań. Jednym z nich jest UNION ALL. W przeciwieństwie do zwykłego UNION, który zwraca unikalne wiersze, UNION ALL zwraca wszystkie pasujące wyniki, nawet jeśli występują duplikaty. W tym artykule pokażę, jak działa UNION ALL w języku SQL i omówię jego praktyczne zastosowania.

Co to jest UNION ALL?

UNION ALL służy do łączenia wyników dwóch lub więcej zapytań SQL. W przeciwieństwie do standardowego UNION, który eliminuje duplikaty, UNION ALL po prostu łączy wszystkie wiersze, niezależnie od tego, czy się powtarzają.

Składnia UNION ALL

Pełna składnia UNION ALL wygląda następująco:


SELECT kolumny FROM tabela1
UNION ALL
SELECT kolumny FROM tabela2;

Najważniejsze zasady, o których warto pamiętać:

  • Liczba i kolejność kolumn w obu zapytaniach muszą być takie same.
  • Typy danych w odpowiadających sobie kolumnach muszą być zgodne lub dać się rzutować.
  • Nie ma automatycznego usunięcia duplikatów – wszystkie dopasowane wiersze są zwracane.

Przykład użycia UNION ALL

Załóżmy, że mamy dwie tabele: pracownicy_oddzial1 i pracownicy_oddzial2. Każda z nich zawiera listę pracowników różnych oddziałów firmy.

Tabela: pracownicy_oddzial1

id imie nazwisko
1 Jan Kowalski
2 Anna Nowak

Tabela: pracownicy_oddzial2

id imie nazwisko
3 Piotr Zieliński
2 Anna Nowak

Jeśli chcemy uzyskać listę wszystkich pracowników z obu oddziałów, niezależnie od duplikatów, wykonujemy następujące zapytanie:


SELECT id, imie, nazwisko FROM pracownicy_oddzial1
UNION ALL
SELECT id, imie, nazwisko FROM pracownicy_oddzial2;

Wynik zwróci wszystkie wpisy, łącznie z powieloną Anną Nowak:

id imie nazwisko
1 Jan Kowalski
2 Anna Nowak
3 Piotr Zieliński
2 Anna Nowak

UNION vs UNION ALL – kluczowe różnice

Jeśli nie jesteś pewien, kiedy używać UNION, a kiedy UNION ALL, oto kluczowe różnice:

Aspekt UNION UNION ALL
Usuwa duplikaty Tak Nie
Szybkość działania Wolniejszy (potrzebne sortowanie i usuwanie duplikatów) Szybszy (brak sortowania)
Zastosowanie Kiedy zależy nam na unikalnych wartościach Kiedy chcemy pełny wynik, łącznie z duplikatami

Kiedy warto używać UNION ALL?

UNION ALL świetnie sprawdza się w następujących przypadkach:

  1. Gdy nie zależy nam na unikalności wyników, a kwestia duplikatów nie ma znaczenia.
  2. Kiedy wydajność jest kluczowa – eliminacja duplikatów wymaga dodatkowego przetwarzania, co może spowalniać zapytania.
  3. Podczas łączenia dużych zbiorów danych, gdzie każde usunięcie duplikatów generuje dodatkowe obciążenie dla bazy danych.

Podsumowanie

UNION ALL to potężne narzędzie w SQL, które pozwala szybko i efektywnie łączyć wyniki wielu zapytań bez usuwania duplikatów. Jest znacznie szybsze niż UNION i przydaje się tam, gdzie nie jest wymagane filtrowanie unikalnych rekordów. Zawsze warto rozważyć jego zastosowanie, szczególnie gdy pracujemy na dużych zbiorach danych.

 

Inny ciekawy artykuł:

Jak działa UNION w języku SQL? Przykłady zastosowania

KajoDataSpace