0

我尝试制作一个 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
4

1 回答 1

1
select * from messages 
where message_id in(select max(msg.message_id) from messages msg
                    where msg.receiver_id = 3 group by sender_id )
于 2012-07-21T23:08:54.030 回答