DISTINCT není funkce, která by se vztahovala pouze na některé sloupce. Je to modifikátor dotazu, který se vztahuje na všechny sloupce ve výběrovém seznamu.
To znamená, že DISTINCT sníží počet řádků pouze v případě, že všechny sloupce jsou totožné se sloupci jiného řádku.
DISTINCT musí následovat bezprostředně po SELECT (spolu s dalšími modifikátory dotazu, jako je SQL_CALC_FOUND_ROWS). Poté můžete podle modifikátorů dotazu vypsat sloupce.
-
VPRAVO:
SELECT DISTINCT foo, ticket_id FROM table...
Vytiskněte řádek pro každé odlišné párování hodnot napříč ticket_id a foo.
-
ŠPATNĚ:
SELECT foo, DISTINCT ticket_id FROM table...
Pokud existují tři různé hodnoty ticket_id, vrátí to pouze tři řádky? Co když existuje šest různých hodnot foo? Které tři hodnoty ze šesti možných hodnot foo by měly být na výstupu?
Je to nejednoznačné, jak je napsáno.