
W SQL mamy kilka sposobów na manipulowanie danymi, a jednym z nich jest operator EXCEPT. Jest on bardzo przydatny, gdy chcemy porównać dwa zestawy wyników i znaleźć różnice między nimi. Dzisiaj dokładnie przyjrzę się temu, jak działa EXCEPT w języku SQL oraz jak można go używać w praktyce.
Co to jest operator EXCEPT w SQL?
Operator EXCEPT w SQL pozwala porównywać dwa zapytania i zwraca tylko te wiersze, które występują w pierwszym zbiorze, ale nie występują w drugim. Działa podobnie do operacji różnicy w teorii zbiorów.
Najprościej można to przedstawić w taki sposób:
SELECT kolumny FROM tabela1
EXCEPT
SELECT kolumny FROM tabela2;
Rezultat tego zapytania będzie zawierał tylko te rekordy z tabela1, które nie mają odpowiednika w tabela2. Warto jednak wiedzieć, że EXCEPT usuwa duplikaty z wyniku, ponieważ domyślnie zwraca jedynie unikalne wiersze.
Warunki poprawnego użycia EXCEPT
Żeby użyć operatora EXCEPT, musimy spełnić kilka podstawowych warunków:
- Obie części zapytania muszą zwracać taką samą liczbę kolumn.
- Typy danych w odpowiednich kolumnach muszą być zgodne.
- Standardowo
EXCEPTzwraca unikalne wartości (odpowiednikEXCEPT DISTINCT).
Przykłady zastosowania operatora EXCEPT
Rozważmy przykład, w którym mamy dwie tabele: Pracownicy oraz Menadżerowie. Chcemy znaleźć wszystkich pracowników, którzy nie są menadżerami.
SELECT imie, nazwisko FROM Pracownicy
EXCEPT
SELECT imie, nazwisko FROM Menadżerowie;
Ten wynik wyświetla tylko tych pracowników, którzy nie mają swoich odpowiedników w tabeli Menadżerowie.
EXCEPT a EXCEPT ALL – jaka jest różnica?
Niektóre systemy SQL (np. PostgreSQL) obsługują wariant EXCEPT ALL, który nie usuwa duplikatów. Oznacza to, że jeśli dany wiersz pojawia się w pierwszym zbiorze kilka razy, zostanie zwrócony dokładnie tyle samo razy – o ile nie występuje w drugim zbiorze.
Przykład:
SELECT imie FROM Pracownicy
EXCEPT ALL
SELECT imie FROM Kandydaci;
Różnica między tymi dwiema wersjami jest istotna, gdy mamy do czynienia z powtarzającymi się wartościami i chcemy zachować ich liczność.
Jak EXCEPT działa w różnych bazach danych?
Nie wszystkie systemy baz danych obsługują EXCEPT. Warto wiedzieć, jak to wygląda w najpopularniejszych systemach:
| System baz danych | Obsługuje EXCEPT? | Obsługuje EXCEPT ALL? |
|---|---|---|
| SQL Server | Tak | Nie |
| PostgreSQL | Tak | Tak |
| MySQL | Nie (można użyć NOT EXISTS lub LEFT JOIN) | Nie |
| Oracle | Tak (jako MINUS) | Nie |
| SQLite | Tak (od wersji 3.15.0) | Tak |
Alternatywy dla EXCEPT w MySQL i innych bazach
MySQL nie obsługuje operatora EXCEPT, ale można go zastąpić innymi technikami, np. LEFT JOIN lub NOT EXISTS.
Użycie LEFT JOIN
SELECT p.imie, p.nazwisko
FROM Pracownicy p
LEFT JOIN Menadżerowie m ON p.imie = m.imie AND p.nazwisko = m.nazwisko
WHERE m.imie IS NULL;
Użycie NOT EXISTS
SELECT imie, nazwisko
FROM Pracownicy p
WHERE NOT EXISTS (
SELECT 1 FROM Menadżerowie m WHERE p.imie = m.imie AND p.nazwisko = m.nazwisko
);
Obie te alternatywy dają podobny rezultat, eliminując wiersze, które mają swoje odpowiedniki w drugiej tabeli.
Podsumowanie
Operator EXCEPT w SQL pozwala szybko porównywać dwa zbiory danych i znaleźć elementy, które znajdują się tylko w jednym z nich. Jest niezwykle użyteczny w analizie danych, raportowaniu i porządkowaniu zbiorów informacji.
Warto pamiętać o kilku kluczowych kwestiach:
EXCEPTusuwa duplikaty z wyników.EXCEPT ALLzachowuje liczbę wystąpień (ale nie we wszystkich bazach jest dostępny).- MySQL nie obsługuje
EXCEPT, ale można go zastąpić za pomocąLEFT JOINlubNOT EXISTS.
Zrozumienie działania EXCEPT pozwala efektywnie filtrować dane i tworzyć precyzyjne zapytania. Mam nadzieję, że teraz wiesz, jak działa EXCEPT w języku SQL i jakie ma praktyczne zastosowania.
Inny ciekawy artykuł:
Jak działa INTERSECT 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, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

