DISTINCT nie jest funkcją, która dotyczy tylko niektórych kolumn. Jest to modyfikator zapytania, który stosuje się do wszystkich kolumn na liście wyboru.
Oznacza to, że DISTINCT redukuje wiersze tylko wtedy, gdy wszystkie kolumny są identyczne z kolumnami innego rzędu.
DISTINCT musi następować bezpośrednio po SELECT (wraz z innymi modyfikatorami zapytań, takimi jak SQL_CALC_FOUND_ROWS). Następnie podążając za modyfikatorami zapytań, możesz wyświetlić listę kolumn.
-
PRAWY:
SELECT DISTINCT foo, ticket_id FROM table...
Wypisz wiersz dla każdej odrębnej pary wartości w identyfikatorze biletu i foo.
-
ŹLE:
SELECT foo, DISTINCT ticket_id FROM table...
Jeśli istnieją trzy różne wartości ticket_id, czy zwróci to tylko trzy wiersze? A jeśli istnieje sześć różnych wartości foo? Które trzy wartości z sześciu możliwych wartości foo powinny zostać wyświetlone?
Jest to niejednoznaczne, jak napisano.