UNION ALL, UNION, INTERSECT, SQL – Jak to działa?

15 kwietnia 2023

union all intersect sql blog

Gdy analizujemy dane w bazie danych SQL, często spotykamy się z potrzebą łączenia informacji z różnych tabel lub zestawów wyników. W tym artykule omówimy trzy operatory używane w SQL do łączenia danych z różnych zapytań: UNION, UNION ALL i INTERSECT. Wyjaśnimy, jak działają te operatory, jak się różnią i kiedy warto ich użyć.

Załóżmy że mamy taką tabelę:

imienazwiskodzial
HalinaNowakIT
HalinaNowakHR
StefanKowalskiIT
KarolMarkowskiHR

UNION

UNION to operator, który łączy wyniki dwóch lub więcej zapytań SELECT, usuwając przy tym zduplikowane wiersze. Wynikowy zestaw danych zawiera unikalne wiersze z każdego z zapytań. Aby UNION działał poprawnie, zapytania muszą zwracać tę samą liczbę kolumn o tych samych typach danych.

Przykład:

SELECT imie, nazwisko FROM pracownicy WHERE dzial = 'HR'
UNION
SELECT imie, nazwisko FROM pracownicy WHERE dzial = 'IT';

W tym przypadku, wynik zapytania będzie zawierał unikalne imiona i nazwiska pracowników działu HR i IT.

imienazwisko
HalinaNowak
StefanKowalski
KarolMarkowski

UNION ALL

UNION ALL działa podobnie do UNION, ale nie usuwa zduplikowanych wierszy. Jest to szybsza alternatywa dla UNION, ponieważ nie wymaga dodatkowego kroku sprawdzania duplikatów. Może być użyteczny, gdy chcemy zachować wszystkie wiersze z obu zapytań, nawet jeśli występują duplikaty.

Przykład:

SELECT imie, nazwisko FROM pracownicy WHERE dzial = 'HR'
UNION ALL
SELECT imie, nazwisko FROM pracownicy WHERE dzial = 'IT';

W wyniku tego zapytania otrzymamy wszystkie wiersze z obu zapytań, bez usuwania duplikatów. Innymi słowy jeśli Halina Nowak jest programistką w dziale HR do wyskoczy nam 2 razy. W poprzednim przykładzie (UNION) wyskoczyła by tylko raz.

imienazwisko
HalinaNowak
HalinaNowak
StefanKowalski
KarolMarkowski

INTERSECT

INTERSECT to operator, który zwraca tylko te wiersze, które występują we wszystkich złączonych zapytaniach. W przeciwieństwie do UNION i UNION ALL, INTERSECT koncentruje się na części wspólnej wyników zapytań.

Przykład:

SELECT imie, nazwisko FROM pracownicy WHERE dzial = 'HR'
INTERSECT
SELECT imie, nazwisko FROM pracownicy WHERE dzial = 'IT';

W wyniku tego zapytania otrzymamy tylko te imiona i nazwiska pracowników, którzy występują zarówno w dziale HR, jak i IT. Przy okazji INTERSECT w SQL usuwa również duplikaty. Zostanie tylko Halinka 😀

imienazwisko
HalinaNowak

Podsumowanie

Operatory UNION, UNION ALL i INTERSECT pozwalają na łączenie danych z różnych zapytań w sposób, który odpowiada naszym potrzebom. UNION usuwa duplikaty i łączy unikalne wiersze z obu zapytań, UNION ALL łączy wszystkie wiersze (zachowując duplikaty), a INTERSECT zwraca tylko te wiersze, które występują we wszystkich złączonych zapytaniach. Wybór odpowiedniego operatora zależy od celów analizy danych i wymagań wobec wyników zapytań.

Oto kilka kierunków, które warto rozważyć:

  1. Jeśli chcemy połączyć unikalne wiersze z różnych zapytań i usunąć duplikaty, używamy UNION.
  2. Jeśli chcemy połączyć wiersze z różnych zapytań i zachować duplikaty, używamy UNION ALL.
  3. Jeśli chcemy znaleźć wspólne wiersze z różnych zapytań, używamy INTERSECT.

Warto pamiętać, że aby użyć tych operatorów, zapytania muszą zwracać tę samą liczbę kolumn o tych samych typach danych.

Oto kilka praktycznych zastosowań tych operatorów:

  • Użycie UNION do wygenerowania listy unikalnych klientów z różnych tabel (np. zamówienia, reklamacje).
  • Użycie UNION ALL do stworzenia raportu zawierającego wszystkie zdarzenia z różnych tabel (np. logi, transakcje).
  • Użycie INTERSECT do identyfikacji wspólnych elementów w dwóch zestawach danych, takich jak klienci, którzy zarówno kupili produkt A, jak i produkt B.

Mając na uwadze różnice między UNION, UNION ALL i INTERSECT oraz ich zastosowania, można efektywniej łączyć i analizować dane w bazach danych SQL. Zrozumienie tych operatorów jest kluczowe dla każdego, kto pracuje z danymi i chce tworzyć bardziej zaawansowane zapytania SQL.

To tyle w tym temacie. Analizujcie w pokoju!  

Podobał Ci się ten artykuł 🙂?
Podziel się nim w Social Mediach 📱
>>> udostępnij go na LinkedIn i pokaż, że codziennie uczysz się czegoś nowego 
>>> wrzuć go na Facebooka, to się może przydać któremuś z Twoich znajomych 
>>> Przypnij sobie tą stronkę to zakładek, może się przydać w przyszłości

Wolisz oglądać 📺 niż czytać – nie ma problemu
>>> Obserwuj i oglądaj KajoData na YouTube

Inne ciekawe artykuły o SQL i nie tylko:

Ja Ci ją z przyjemnością wyślę. Za darmo. Bez spamu.

Poradnik Początkującego Analityka

Video - jak szukać pracy w IT

Regularne dawki darmowej wiedzy, bez spamu.

Zgadzam się na przetwarzanie moich danych osobowych przez KajoData Kajo Rudziński w celu realizacji usługi newsletter, a tym samym wysyłania mi informacji o produktach blogowych, usługach, lub nowościach, zgodnie z polityką prywatności. Wiem, że zgodę tę mogę w każdej chwili cofnąć.

Please wait...

Dziękujemy za zapis!