DISTINCT är inte en funktion som bara gäller för vissa kolumner. Det är en frågemodifierare som gäller för alla kolumner i urvalslistan.
Det vill säga, DISTINCT reducerar rader endast om alla kolumner är identiska med kolumnerna i en annan rad.
DISTINCT måste följa omedelbart efter SELECT (tillsammans med andra frågemodifierare, som SQL_CALC_FOUND_ROWS). Sedan efter frågemodifierarna kan du lista kolumner.
-
HÖGER:
SELECT DISTINCT foo, ticket_id FROM table...
Skriv ut en rad för varje distinkt parning av värden över ticket_id och foo.
-
FEL:
SELECT foo, DISTINCT ticket_id FROM table...
Om det finns tre distinkta värden för ticket_id, skulle detta endast returnera tre rader? Vad händer om det finns sex distinkta värden för foo? Vilka tre värden av de sex möjliga värdena för foo ska matas ut?
Det är tvetydigt som skrivet.