distinct
klíčové slovo dělá to, co má dělat, vraťte každý jeden řádek s danou hodnotou sloupce. Distinct vám neumožňuje určit který takový řádek bude vrácen a z původního dotazu je jasné, že takové řazení je povoleno (za řádkem s id 429 následuje řádek s id 443).
Chcete-li převzít kontrolu nad tím, jaké řádky budou vráceny, musíte přeformulovat dotaz. Typickým řešením, které uvedu, je použití group by
, výběrem sloupce skupiny a požadovaného řádku z každé skupiny, něco ve smyslu
SELECT message.id, MAX(message.created_at) FROM message GROUP BY message.id;
Pokud potřebuji udělat více, použiji tento druh dotazu jako podvýběr ve větším dotazu, případně se připojím k poli id, abych získal více polí z preferovaného řádku, nebo dotaz seřadím určitým způsobem.