
Jeśli kiedykolwiek musiałem połączyć wyniki z dwóch różnych zapytań SQL, bez duplikowania powtarzających się rekordów, to jednym z moich podstawowych narzędzi był operator UNION
. Jest to potężne narzędzie dostępne w SQL, które pozwala na scalenie wyników z kilku tabel w jedną znormalizowaną listę.
Co to jest UNION w SQL?
Operator UNION
w SQL służy do łączenia wyników dwóch lub więcej instrukcji SELECT
. Ważną cechą UNION
jest to, że automatycznie usuwa duplikaty z wyniku końcowego. Oznacza to, że jeśli w obu zapytaniach znajdują się te same rekordy, finalny wynik będzie zawierał tylko jedną ich wystąpienie.
Jak działa UNION w języku SQL? Przykłady zastosowania
Aby użyć UNION
, muszę spełnić kilka podstawowych warunków:
- Każde zapytanie
SELECT
musi zwracać tę samą liczbę kolumn. - Typy danych w odpowiednich kolumnach muszą być kompatybilne.
- Kolejność kolumn w każdym zapytaniu musi być taka sama.
Podstawowy przykład użycia UNION
Spójrzmy na prosty przykład:
SELECT imie, nazwisko FROM pracownicy
UNION
SELECT imie, nazwisko FROM klienci;
W powyższym przypadku wyniki pochodzące z tabeli pracownicy
oraz klienci
zostaną połączone w jedną listę, zawierającą unikalne imiona i nazwiska.
UNION vs UNION ALL – jaka jest różnica?
Warto zaznaczyć istotną różnicę pomiędzy UNION
a UNION ALL
. Standardowy UNION
usuwa duplikaty, co może mieć wpływ na wydajność zapytania. Jeśli zależy mi na zachowaniu wszystkich rekordów, także tych zduplikowanych, wtedy stosuję UNION ALL
.
SELECT imie, nazwisko FROM pracownicy
UNION ALL
SELECT imie, nazwisko FROM klienci;
W tej wersji wynik będzie zawierał wszystkie rekordy z obu zapytań – również te powtarzające się.
Kiedy warto korzystać z UNION?
Na co dzień stosuję UNION
w wielu sytuacjach, ale szczególnie przydaje się, gdy:
- Muszę połączyć podobne zbiory danych z różnych tabel.
- Chcę stworzyć jednolitą listę unikalnych wpisów z różnych źródeł.
- Analizuję dane pochodzące z różnych systemów operacyjnych, które nie są jeszcze w pełni zintegrowane.
Przykład z warunkami filtrującymi
Nie zawsze interesuje mnie wszystkie dane, więc mogę zastosować warunki w każdej części zapytania:
SELECT imie, nazwisko FROM pracownicy WHERE stanowisko = 'Programista'
UNION
SELECT imie, nazwisko FROM klienci WHERE kraj = 'Polska';
Wynik to lista imion i nazwisk programistów z tabeli pracownicy
oraz klientów z Polski z tabeli klienci
.
Wydajność zapytań UNION
Chociaż UNION
jest niesamowicie przydatny, ma swoją cenę jeśli chodzi o wydajność. SQL musi porównać wyniki i usunąć duplikaty, co może być czasochłonne przy dużych zbiorach danych. Jeśli wiem, że duplikaty nie są problemem, zawsze wybieram UNION ALL
, który działa szybciej.
Porównanie UNION i JOIN
Na początku nauki SQL często zastanawiałem się, jaka jest różnica między UNION
a JOIN
. Chociaż oba służą do łączenia danych, działają zupełnie inaczej:
Cecha | UNION | JOIN |
---|---|---|
Sposób łączenia | Łączy wyniki dwóch zapytań w jeden zbiór | Łączy wiersze na podstawie wspólnych wartości |
Kolumny | Musi mieć tę samą liczbę kolumn | Może łączyć różne zestawy kolumn |
Redundancja danych | Usuń duplikaty (chyba że używasz UNION ALL) | Może generować duplikaty, jeśli istnieją powiązania jeden-do-wielu |
Podsumowanie
Operator UNION
w SQL to świetne narzędzie do łączenia wyników z różnych zapytań w jeden unikalny zbiór danych. Jeśli nie potrzebuję eliminowania duplikatów, warto rozważyć UNION ALL
, aby zwiększyć wydajność zapytań. Kluczowe jest także rozumienie różnicy między UNION
a JOIN
, ponieważ każde z tych narzędzi sprawdza się w innych przypadkach.
Inny ciekawy artykuł:
Jak działa SELF JOIN 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.