Aby w wyniku zapytania wyeliminować powtarzające się wiersze, należy użyć klauzuli
Dobrze.
DISTINCT usuwa z wyniku powtarzające się wiersze, zostawiając unikalne.Źle.
ORDER BY sortuje wynik, lecz nie eliminuje powtórzeń.Źle.
LIMIT ogranicza liczbę zwracanych wierszy, ale nie usuwa duplikatów.Źle.
UNIQUE to więz/indeks definiowany na kolumnie, nie klauzula zapytania SELECT.Klauzula
DISTINCT w zapytaniu SELECT porównuje całe zwracane wiersze i pozostawia tylko niepowtarzalne, usuwając wszystkie ich kopie. Dotyczy zestawu kolumn wskazanych po słowie SELECT: jeśli dwa wiersze mają identyczne wartości we wszystkich tych kolumnach, w wyniku pojawi się jeden z nich. Na przykład SELECT DISTINCT miasto FROM klienci zwróci listę miast bez powtórzeń, nawet gdy wielu klientów mieszka w tym samym mieście. To właśnie ta klauzula odpowiada za eliminację zduplikowanych wierszy w wyniku zapytania.Najczęstsze pomyłki w tym pytaniu biorą się z mylenia ról poszczególnych słów kluczowych.
LIMIT jedynie ogranicza liczbę zwróconych wierszy (np. pierwszych dziesięć) i w ogóle nie sprawdza, czy się powtarzają, więc duplikaty nadal mogą trafić do wyniku. ORDER BY ustawia wiersze w określonej kolejności; powtórzenia po posortowaniu znajdą się obok siebie, ale wciąż tam będą - sortowanie ich nie kasuje. UNIQUE bywa kojarzone ze słowem „unikalny”, jednak to ograniczenie integralności (więz lub indeks) zakładane na kolumnę przy projektowaniu tabeli, a nie klauzula używana w zapytaniu SELECT. Do usunięcia powtarzających się wierszy z wyniku służy wyłącznie DISTINCT, która porównuje wiersze i zostawia tylko unikalne.