ключевое слово distinct
делает то, что должно, возвращает одну строку с заданным значением столбца.Distinct не позволяет вам указать , какая такая строка будет возвращена, и из исходного запроса ясно, что такой порядок разрешен (есть строка с идентификатором 443, которая следует за строкой с идентификатором 429).
Чтобы получить контроль над тем, какие строки будут возвращены, необходимо переформулировать запрос.Типичное решение, которое я приму, это использовать group by
, выбирая столбец группы и нужную строку из каждой группы, что-то с эффектом
SELECT message.id, MAX(message.created_at) FROM message GROUP BY message.id;
Если мне нужно сделать больше, я 'Я буду использовать этот тип запроса в качестве подвыбора в большем запросе, возможно, присоединяясь к полю id, чтобы получить больше полей из предпочтительной строки, или упорядочив запрос определенным образом.