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

f0brbegy  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(334)

大家好,我需要帮助。
这是我的表结构。

我需要找到用户id为1的用户和其他用户之间的最新消息。
结果如下:

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

chy5wohz

chy5wohz1#

我不知道你是怎么定义“最新的”—— 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))
                     );

相关问题