我一直在用这个来拉头发,我有一个用于网站的消息传递系统,用户可以在其中互相发送消息,收件箱现在会向您显示消息列表(例如老式短信),但我想做更现代,给人一种更像 Facebook 的感觉。该表非常基本
id senderid recipientid dateadded message
--------------------------------------------------------------------
1 1 2 2013-04-01 hello1
2 3 2 2013-04-02 hello2
3 1 2 2013-04-03 hello3
4 3 2 2013-04-04 hello4
5 3 2 2013-04-05 hello5
6 4 2 2013-04-06 hello6
现在,我遇到的困难是加载邮件,按发件人 ID 对它们进行分组,并添加最新日期的发件人的邮件,从最旧到最新排序
所以我希望上面的表格像这样加载
id senderid recipientid dateadded message
--------------------------------------------------------------------
5 3 2 2013-04-05 hello5
4 3 2 2013-04-04 hello4
2 3 2 2013-04-02 hello2
3 1 2 2013-04-03 hello2
1 1 2 2013-04-01 hello1
6 4 2 2013-04-01 hello1
最新消息的发件人ID在前,依此类推。
这是我刚刚根据其他类似帖子使用的查询
SELECT m.*
FROM messages m
INNER JOIN (
SELECT senderid, recipientid, dateadded
FROM messages
WHERE recipientid = :user_id
GROUP BY senderid
ORDER BY dateadded DESC
) senders ON m.senderid = senders.senderid
ORDER BY senders.dateadded DESC
不幸的是,该查询不起作用,它只对发件人的
同样,这里的目标是加载发送给登录用户的所有消息,但按发件人 ID 和为消息添加的最新日期对它们进行排序
提前感谢您的任何评论,Stackoverflow 对我帮助很大,我非常感谢所有帮助。