Jak działa SELECT DISTINCT w języku SQL? Przykłady zastosowania

Jak działa SELECT DISTINCT w języku SQL? Przykłady zastosowania

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:

  1. Nie można używać DISTINCT w kombinacji z GROUP BY – jeśli grupuję dane, powinienem użyć GROUP BY zamiast DISTINCT.
  2. Jest mniej wydajny niż GROUP BY w przypadku dużych zbiorów danych, gdyż porównuje i filtruje wszystkie wiersze.
  3. 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

KajoDataSpace