W SQL, gdy w tabeli występują powtórzenia tej samej wartości (np. to samo miasto zapisane dla wielu mieszkańców), standardowym sposobem uzyskania listy wartości bez duplikatów w wyniku zapytania jest użycie słowa kluczowego DISTINCT w instrukcji SELECT.
Przykładowo, aby otrzymać listę miast bez powtórzeń, stosuje się zapytanie w rodzaju:
SELECT DISTINCT miasto
FROM mieszkancy;
DISTINCT działa na zestawie zwracanych kolumn (projekcji). Jeżeli wybierzesz jedną kolumnę (np. miasto), to wynik będzie zawierał każdą nazwę miasta tylko raz. Jeżeli wybierzesz kilka kolumn, unikalność dotyczy całych wierszy wynikowych (kombinacji wartości), co jest częstą pułapką na egzaminach.
- HAVING nie służy do usuwania duplikatów. To element używany po GROUP BY do filtrowania grup na podstawie warunków (zwykle z funkcjami agregującymi). Można nim ograniczać grupy, ale nie jest to mechanizm "wybierz unikalne wartości".
- UNIQUE w typowych dialektach SQL oznacza ograniczenie (constraint) zapewniające, że w kolumnie lub zestawie kolumn w tabeli nie pojawią się duplikaty podczas wstawiania/aktualizacji danych. To mechanizm integralności danych na poziomie definicji tabeli, a nie klauzula zapytania SELECT do deduplikacji wyników.
- CHECK również jest ograniczeniem integralności danych. Służy do walidowania, czy wstawiana lub zmieniana wartość spełnia warunek logiczny (np. zakres liczbowy). Nie ma zastosowania do wybierania unikalnych wartości w wyniku zapytania.
Wskazówka egzaminacyjna: gdy pytanie brzmi "niepowtarzające się wartości w wyniku SELECT", niemal zawsze chodzi o DISTINCT. Gdy mowa o "zapewnieniu unikalności w tabeli" lub "blokowaniu duplikatów przy zapisie", wtedy właściwym tropem jest ograniczenie UNIQUE (lub klucz główny), a nie DISTINCT.