假设我们的表具有以下结构,其中包含示例数据,并且其他用户不仅有 2 个
因此,在这种情况下,我应该只收到每两个用户之间的一次对话,例如
35 比 1 和 1 到 35
但是我尝试了下面的查询,并且得到了两个对话
select msg_id,msg_from,msg_to,msg_content,msg_status,msg_created_at,
(select user_name from users where user_id = msg_from ) user_name
from messages where msg_id in
(select max(msg_id) from messages )
and msg_to = 35 or msg_from = 35
请帮忙以获得正确的结果。
最佳答案
我认为您应该将条件 msg_to = 35 或 msg_from = 35
放在括号之间,并将其移至返回最大 id 的子查询内。如下面的代码所示:
select msg_id,msg_from,msg_to,msg_content,msg_status,msg_created_at,
(select user_name from users where user_id = msg_from ) user_name
from messages where msg_id in
(select max(msg_id) from messages
where (msg_to = 35 or msg_from = 35))
关于mysql - 获取对话列表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38000507/