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
INTERSECTdomyślnie usuwa duplikaty, podobnie jakUNION.- 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
UNIONzwraca sumę wyników dwóch zapytań.INTERSECTzwraca część wspólną wyników.EXCEPT/MINUSzwraca 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.