用于按最后一条消息的顺序获取消息用户的SQL查询

时间:2018-04-22 19:11:24

标签: mysql sql

我有一个SQL查询,用于从我的用户表中选择已向我所选用户发送消息或从其接收消息的用户(我的消息表中的senderID或recipientID)。

查询如下:

SELECT * 
FROM users 
WHERE (ID IN (SELECT DISTINCT(senderID) 
              FROM messages 
              WHERE recipientID = $userID) 
       OR ID IN (SELECT DISTINCT(recipientID) 
                 FROM messages 
                 WHERE senderID = $userID))

鉴于列sentAt是消息的时间戳,我如何按照哪个用户发送最新消息的顺序来命令返回。我试图将ORDER BY sentAt DESC附加到子查询,但它没有返回预期的结果。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您似乎想要join代替in

select u.*
from users u join
     messages m
     on u.id in (m.senderid, m.recipientid)
where u.id = $userid
order by m.sentat desc