我有一个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.
这有效但不显示最后一条消息。它只显示第一条消息。
有人知道可能出现什么问题吗?
由于
答案 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
至于为什么只有一个结果..我们必须看看实际的脚本是什么样的。