我尝试制作一个 SQL,它会从每个发送给我的用户那里给我带来最后一条消息。我正在使用 phpmyadmin。
我有两张桌子
用户
编号 | 用户名 6 6666 7 8888
消息
message_id | 发件人 ID | 接收者 ID | 主题 | 正文 | 日期 1 6 3 aaa bbb 2012-07-22 00:14:41 2 6 3 aaa1 bbb1 2012-07-22 00:15:41 3 7 3 vvv vvv 2012-07-22 00:19:41
所以结果必须是(按日期(时间)排序)
3 7 3 vvv vvv 2012-07-22 00:19:41 2 6 3 aaa1 bbb1 2012-07-22 00:15:41
我已经在查询下方进行了这个查询(我测试了我的 id = 3),但我认为它不是那么好(优化)并且有更简单的方法来选择这些数据
SELECT u.username, m.sender_id , m.subject, m.message
FROM users u
LEFT JOIN messages m ON m.sender_id = u.id OR m.message_id = (SELECT b.message_id FROM messages b WHERE b.receiver_id = 3 ORDER BY b.date DESC LIMIT 0,1)
WHERE m.receiver_id = 3
GROUP BY m.sender_id
ORDER BY m.date DESC