mysql - 获取对话列表查询

标签 mysql sql database

假设我们的表具有以下结构,其中包含示例数据,并且其他用户不仅有 2 个

enter image description here

因此,在这种情况下,我应该只收到每两个用户之间的一次对话,例如

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/

相关文章:

mysql - 错误 #1452 : Cannot add or update a child row: a foreign key constraint fails

database - 我可以向 Cloud Spanner 实例添加更多节点吗?

python - 如何在 Django 中过滤具有多对多关系的对象

database - 从 mat 文件中读取数据而不是从数据库中读取数据的好处

MySQL 过程导致语法错误

php - 如何使用 php shell_exec 和 sql 命令行创建数据库

javascript - 重复从 SQL 服务器更新 HTML 表

php - 获取简单的 html 文本字段以发布到 mysql 数据库

sql - LINQ to SQL : Concurrency resolution

mysql - 如何从数据库中随机获取数据?