SQL - 选择聊天表上的最新消息

时间:2017-03-28 20:41:07

标签: mysql sql

我目前正在尝试与Ajax进行在线聊天,并且消息通过php文件发送到我的数据库。我希望能够列出用户参与的所有会话。我们以此为例: exemple of table

我想列出从最新版本到最早版本订购的对话。

我应该与用户25846交谈....因为它是最后一条消息,然后是10206 ......最后是11627 ......

我想要的输出是一个包含3个记录的表,其中包含字段ID_to和content_msg,如上所述。 这是我正在尝试的当前SQL请求:

SELECT DISTINCT ID_to 
FROM (
    SELECT * 
    FROM messages 
    WHERE ID_to = 1140816689329214 OR ID_from = 1140816689329214 
    ORDER BY timestamp_msg DESC
    ) as tmp

即使这样,输出的顺序也不正确,我无法理解为什么因为我的请求有订单。

提前感谢您的任何帮助

1 个答案:

答案 0 :(得分:1)

排序由最外层查询中的ORDER BY确定。在子查询中排序并不重要。

这似乎就是你想要的:

SELECT id_to
FROM messages 
WHERE ID_to = 1140816689329214 OR ID_from = 1140816689329214 
GROUP BY id_to
ORDER BY MAX(timestamp_msg) DESC;