如何从表格中获取私人消息列表?

时间:2019-01-09 15:40:08

标签: mysql sql greatest-n-per-group

大家好,我需要帮助。

这是我的表结构。 enter image description here

我需要找到用户ID为1的用户与其他用户之间的最新消息。

结果看起来像这样: enter image description here

我如何使用sql来获得它?谢谢大家。

1 个答案:

答案 0 :(得分:1)

我不确定您是如何定义“最新”的-updated_atcreated_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))
                     );