PHP消息传递线程系统

时间:2013-07-26 18:40:18

标签: php mysql group-by max

我有一个PHP消息系统,其工作原理如下。

message_thread表 id(pk),user1_deleted,user2_deleted

消息 id,thread_id(fk),message,message_date,sender_id,receiver_id,sender_deleted,receiver_deleted

我试图通过使用以下

查询消息表来获取最后一条消息的线程列表
$sql = "SELECT thread_id, msg, sender_id, receiver_id, MAX(message_date) AS msg_date FROM messages WHERE (sender_id = '$user_id' AND sender_deleted = 0) OR (receiver_id = '$user_id' AND receiver_deleted = 0) GROUP BY thread_id.

这有效但不显示最后一条消息。它只显示第一条消息。

有人知道可能出现什么问题吗?

由于

2 个答案:

答案 0 :(得分:2)

这对我有用

$sql = "SELECT * FROM ( 
    SELECT id, thread_id, msg, sender_id, receiver_id, msg_date 
    FROM messages
    WHERE (sender_id = '$user_id' AND sender_deleted = 0) OR (receiver_id = '$user_id' AND receiver_deleted = 0)
    ORDER BY msg_date DESC
) AS SQLi GROUP BY thread_id";

感谢所有的贡献。

答案 1 :(得分:1)

使用此结束查询以反转顺序

 ORDER BY message_date DESC

至于为什么只有一个结果..我们必须看看实际的脚本是什么样的。