Как получить список личных сообщений из таблицы? - PullRequest
0 голосов
/ 09 января 2019

Привет всем, мне нужна помощь.

Вот моя структура таблицы. enter image description here

Мне нужно найти последнее сообщение между пользователем с идентификатором пользователя 1 и другими пользователями.

Результат выглядит так: enter image description here

Как мне использовать sql, чтобы получить это? Спасибо вам всем.

1 Ответ

0 голосов
/ 09 января 2019

Я не уверен, как вы определяете "последний" - updated_at? created_at? или id?

В любом случае, один подход является коррелированным подзапросом:

select m.*
from messages m
where 1 in (m.receiver_id, m.sender_id) and
      m.updated_at = (select max(m2.updated_at)
                      from messages m2
                      where (m2.receiver_id, m2.sender_id) in ((m.receiver_id, m.sender_id), (m.sender_id, m.receiver_id))
                     );
...