PHP Mysql 表:消息
id sender receiver time_sent Message SendDel RecDel
1 1 3 2011-08-17 14:00:00 [text] 0 0
2 3 1 2011-08-17 15:00:00 [text] 0 0
3 2 4 2011-08-18 14:19:28 [text] 1 0
4 4 2 2011-08-18 15:19:28 [text] 0 0
目标是检索最高值(value)的消息 (MAX) 并根据发送者、接收者对消息进行分组。所以消息 id 的 1 和 2 会组合在一起,id 的 3 和 4 会组合在一起。
例子:登录userid = 2应该返回
id sender receiver time_sent Message SendDel RecDel
4 4 2 2011-08-18 15:19:28 [text] 0 0
我不确定为什么,但我的查询没有将所有消息组合在一起。这是我的查询:
SELECT id, sender, receiver, MAX(time_sent), MAX(message)
FROM Messages
WHERE sender='$userid' OR receiver = '$userid'
Group By sender,receiver
Order BY time_sent DESC
任何解决方案?
最佳答案
你想要:
So message id's 1 and 2 would group together and id's 3 and 4 would group together.
您必须在 group by 子句中施展魔法才能做到这一点。
SELECT id, sender, receiver, MAX(time_sent), MAX(message)
FROM Messages
WHERE sender='$userid' OR receiver = '$userid'
Group By (if(sender > receiver, sender, receiver))
, (if(sender > receiver, receiver, sender))
Order BY time_sent DESC
关于php Mysql 将用户消息分组和排序在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7408662/