den distinct
nyckelordet är att göra vad det är tänkt att göra, returnera en rad vardera med ett givet kolumnvärde. Distinct tillåter dig inte att ange vilket en sådan rad kommer att returneras, och det framgår av den ursprungliga frågan att en sådan ordning är tillåten (det finns en rad med id 443 som följer efter en rad med id 429).
För att ta kontroll över vilka rader som kommer att returneras måste du omformulera frågan. En typisk lösning jag kommer att ta är att använda en group by
, välja gruppkolumnen och önskad rad från varje grupp, något till effekten av
SELECT message.id, MAX(message.created_at) FROM message GROUP BY message.id;
Om jag behöver göra mer kommer jag att använda den här typen av fråga som ett underval i en större fråga, eventuellt gå med i id-fältet för att få fler fält från den föredragna raden, eller ordna frågan på ett speciellt sätt.