INTERSECT w SQL

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Co to jest INTERSECT w SQL?

INTERSECT to operator zbiorowy SQL służący do łączenia wyników dwóch zapytań. Zwraca część wspólną wyników, czyli tylko te wiersze, które występują jednocześnie w wyniku pierwszego i drugiego zapytania.

Najprościej: INTERSECT działa podobnie jak przecięcie zbiorów w matematyce.

Składnia

SELECT kolumna1, kolumna2
FROM tabela1
INTERSECT
SELECT kolumna1, kolumna2
FROM tabela2;

Warunki użycia

Aby użyć INTERSECT, oba zapytania muszą zwracać:

  • taką samą liczbę kolumn,
  • zgodne typy danych w odpowiadających sobie kolumnach,
  • kolumny w tej samej kolejności znaczeniowej.

Nazwy kolumn nie muszą być identyczne, ale typy danych powinny być zgodne.

Przykład

SELECT id_klienta
FROM zamowienia_2023
INTERSECT
SELECT id_klienta
FROM zamowienia_2024;

To zapytanie zwróci klientów, którzy złożyli zamówienia zarówno w 2023, jak i w 2024 roku.

Ważne cechy

  • INTERSECT domyślnie usuwa duplikaty, podobnie jak UNION.
  • Wynikiem są tylko wspólne wiersze z obu zapytań.
  • Kolejność zapytań zwykle nie zmienia wyniku, bo część wspólna jest symetryczna.

Porównanie z innymi operatorami

  • UNION zwraca sumę wyników dwóch zapytań.
  • INTERSECT zwraca część wspólną wyników.
  • EXCEPT / MINUS zwraca wiersze z pierwszego zapytania, których nie ma w drugim.

Uwaga praktyczna

Nie wszystkie systemy baz danych obsługują INTERSECT w taki sam sposób. Na przykład PostgreSQL i SQL Server obsługują ten operator, natomiast w MySQL często trzeba zastąpić go zapytaniem z INNER JOIN albo EXISTS.