我正在尝试使用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

即使这样,输出的顺序也不正确,我也不明白为什么,因为我有一个按我的要求排序的命令。
提前谢谢你的帮助

最佳答案

排序由最外层查询中的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;

关于mysql - SQL-在聊天表上选择最新消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43079535/

10-14 14:42
查看更多