
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, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.