Получение последней записи в каждой группе - группа по нескольким столбцам [дубликаты]

Я делаю группу записей с одинаковым post_id и sender id , я хочу, чтобы каждая группа возвращала запись с наименьшим time , я использую myql версии 5, как мне это сделать.

Это моя таблица messages

введите описание изображения здесь

Ожидаемые результаты:

введите описание изображения здесь

Я использовал следующий запрос, но он не возвращал запись с наименьшим временем в каждой группе, как ожидалось

select * from `messages` group by `post_id`, `sender_id` order by `time` desc

Всего 1 ответ


Один метод использует коррелированный подзапрос:

select m.*
from messages m
where m.time = (select max(m2.time)
                from messages m2
                where (m2.post_id, m2.sender_id) in ( (m.post_id, m.sender_id), (m.sender_id, m.post_id))
               );

Есть идеи?

10000