php Mysql将用户消息分组和排序在一起

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

目标是检索最高价值的消息(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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...