
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:
- Gdy nie zależy nam na unikalności wyników, a kwestia duplikatów nie ma znaczenia.
- Kiedy wydajność jest kluczowa – eliminacja duplikatów wymaga dodatkowego przetwarzania, co może spowalniać zapytania.
- 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
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

