Я пишу систему обмена сообщениями и пытаюсь найти последние сообщения в каждом диалоге для данного пользователя (id = 46).Вот что у меня сейчас есть:
SELECT sender, receiver, MAX(created_at) maxDate
FROM message
WHERE sender = 46 OR receiver = 46
GROUP BY sender, receiver;
Что выводит:
45 46 2018-09-24 21:14:47
46 45 2018-09-24 21:10:32
46 1 2018-09-24 21:08:47
46 25 2018-09-23 22:25:09
Проблема в том, что разговор между 45 и 46 - это один разговор, но он дает две строки врезультат, потому что каждый человек отправлял сообщения друг другу.
Я хотел бы вместо этого получать только последнее сообщение из всего диалога, поэтому я бы как-то изменил SQL, чтобы вместо этого получить следующее:
45 46 2018-09-24 21:14:47
46 1 2018-09-24 21:08:47
46 25 2018-09-23 22:25:09
Другая строка была отброшена, потому что в их разговоре 45 отправило самое последнее сообщение.
Я некоторое время бился об это и не могу понять это.