DISTINCT er ikke en funktion, der kun gælder for nogle kolonner. Det er en forespørgselsmodifikator, der gælder for alle kolonner i valglisten.
Det vil sige, DISTINCT reducerer kun rækker, hvis alle kolonner er identiske med kolonnerne i en anden række.
DISTINCT skal følge umiddelbart efter SELECT (sammen med andre forespørgselsmodifikatorer, såsom SQL_CALC_FOUND_ROWS). Efter forespørgselsmodifikatorerne kan du angive kolonner.
-
HØJRE:
SELECT DISTINCT foo, ticket_id FROM table...
Udskriv en række for hver særskilte parring af værdier på tværs af ticket_id og foo.
-
FORKERT:
SELECT foo, DISTINCT ticket_id FROM table...
Hvis der er tre forskellige værdier af ticket_id, ville dette kun returnere tre rækker? Hvad hvis der er seks forskellige værdier af foo? Hvilke tre værdier af de seks mulige værdier for foo skal udlæses?
Det er tvetydigt som skrevet.