W języku SQL, zarówno UNION, jak i INTERSECT są operatorami stosowanymi do łączenia wyników dwóch lub więcej zapytań SELECT. Jednak każdy z nich służy do osiągnięcia innego celu.
UNION: Operator UNION jest używany do złączenia wyników dwóch lub więcej zapytań SELECT w jeden zestaw wyników, eliminując duplikaty. W praktyce oznacza to, że zwraca wszystkie wiersze z obu zapytań, ale każdy wiersz pojawi się tylko raz, nawet jeśli wystąpił w obu zapytaniach. Zapytania, które są łączone za pomocą UNION, muszą spełniać warunek: muszą mieć tę samą liczbę kolumn i te kolumny muszą być tego samego typu danych.
Przykład użycia UNION:
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
INTERSECT: Operator INTERSECT służy do zwrócenia tylko tych wierszy, które są wspólne dla obu zapytań SELECT. Innymi słowy, zwraca przecięcie wyników obu zapytań, czyli wiersze występujące w obu wynikach. Tak samo jak w przypadku UNION, zapytania łączone za pomocą INTERSECT muszą mieć tę samą liczbę kolumn i te kolumny muszą być tego samego typu danych.
Przykład użycia INTERSECT:
SELECT column1, column2 FROM table1
INTERSECT
SELECT column1, column2 FROM table2;
Podsumowując, różnice między UNION a INTERSECT są następujące:
- UNION zwraca wszystkie unikatowe wiersze z obu zapytań, łącząc je w jeden zestaw wyników.
- INTERSECT zwraca tylko te wiersze, które są wspólne dla obu zapytań, czyli ich przecięcie.