
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ć
DISTINCT
w kombinacji zGROUP BY
– jeśli grupuję dane, powinienem użyćGROUP BY
zamiastDISTINCT
. - Jest mniej wydajny niż
GROUP BY
w 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, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.