
Pracując z bazami danych, często spotykam się z sytuacją, w której muszę pobrać unikalne wartości z danej kolumny lub zestawu kolumn. Właśnie do tego celu służy SELECT DISTINCT w SQL. Jest to niezwykle przydatne narzędzie, które umożliwia eliminację duplikatów w wynikach zapytania.
Co to jest SELECT DISTINCT?
SELECT DISTINCT to klauzula SQL służąca do zwracania unikalnych wartości w kolumnie lub w połączeniu kolumn. Standardowe zapytanie SELECT zwraca wszystkie pasujące rekordy, nawet jeśli niektóre z nich występują wielokrotnie. Gdy dodam do niego DISTINCT, SQL wybiera jedynie unikalne wiersze.
Składnia SELECT DISTINCT
Podstawowa składnia wygląda następująco:
SELECT DISTINCT kolumna1, kolumna2
FROM nazwa_tabeli;
W praktyce oznacza to, że jeśli mamy powtarzające się wartości w wybranych kolumnach, SQL zwróci tylko jedną z nich.
Przykład zastosowania SELECT DISTINCT
Aby lepiej zobrazować działanie SELECT DISTINCT, posłużę się przykładem. Załóżmy, że mam tabelę klienci z następującymi danymi:
| id | imie | miasto |
|---|---|---|
| 1 | Jan | Warszawa |
| 2 | Maria | Kraków |
| 3 | Jan | Warszawa |
| 4 | Anna | Gdańsk |
| 5 | Maria | Kraków |
Jeśli wykonam standardowe zapytanie:
SELECT imie FROM klienci;
Otrzymam wyniki:
- Jan
- Maria
- Jan
- Anna
- Maria
Natomiast użycie SELECT DISTINCT sprawi, że wyniki będą wyglądały tak:
SELECT DISTINCT imie FROM klienci;
- Jan
- Maria
- Anna
SELECT DISTINCT na wielu kolumnach
Ciekawą możliwością jest użycie SELECT DISTINCT na więcej niż jednej kolumnie. Wówczas SQL porównuje kombinacje wartości i zwraca tylko unikalne zestawy.
SELECT DISTINCT imie, miasto FROM klienci;
Wynik takiego zapytania będzie następujący:
- Jan – Warszawa
- Maria – Kraków
- Anna – Gdańsk
Ograniczenia SELECT DISTINCT
Choć SELECT DISTINCT jest potężnym narzędziem, ma pewne ograniczenia:
- Nie można używać
DISTINCTw kombinacji zGROUP BY– jeśli grupuję dane, powinienem użyćGROUP BYzamiastDISTINCT. - Jest mniej wydajny niż
GROUP BYw przypadku dużych zbiorów danych, gdyż porównuje i filtruje wszystkie wiersze. - Nie eliminuje duplikatów powstałych na poziomie różnych typów danych, np. zapisów '1′ jako liczby oraz tekstu '1′ – SQL może traktować je jako różne wartości.
Kiedy warto używać SELECT DISTINCT?
Najlepiej korzystać z klauzuli SELECT DISTINCT w sytuacjach takich jak:
- Pobieranie listy unikalnych wartości z pojedynczej kolumny, np. unikalnych miast, nazwisk klientów.
- Analiza danych wymagająca filtrowania powtarzających się rekordów.
- Zapobieganie zwracaniu zbędnych duplikatów w końcowych wynikach zapytań.
Podsumowanie
SELECT DISTINCT w SQL to prosty sposób na eliminację duplikatów i pracę na unikalnych wartościach. Umożliwia szybkie filtrowanie wyników i może znacząco ułatwić analizę danych. Warto jednak pamiętać o jego ograniczeniach oraz wpływie na wydajność w przypadku dużych zbiorów danych. Często jest przydatny do selekcji istotnych informacji bez zbędnych powtórzeń.
Inny ciekawy artykuł:
Jak działa FOREIGN KEY 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.

