Для выборки последнего сообщения пользователя 4 с каждым другим пользователем, где он является отправителем или получателем, можно использовать следующий запрос к базе данных:
SELECT recipient_id, sender_id, message
FROM messages
WHERE (sender_id = 4 OR recipient_id = 4)
AND (sender_id, recipient_id, created_at) IN (
SELECT sender_id, recipient_id, MAX(created_at)
FROM messages
WHERE sender_id = 4 OR recipient_id = 4
GROUP BY sender_id, recipient_id
)
Где:
- messages - название таблицы с сообщениями;
- recipient_id - идентификатор получателя сообщения;
- sender_id - идентификатор отправителя сообщения;
- message - содержание сообщения;
- created_at - дата и время создания сообщения.
Этот запрос выберет последнее сообщение, связанное с пользователем 4 (Дима), для каждого уникального собеседника, где он является отправителем или получателем.