我正在试着制作一个收件箱中的信息部分。我的问题是这样的。
标识用户从用户到
1甲b
2个b a
现在我只需要选择a和b之间的一条对话消息
$query="select *
from messages
where userfrom='a' || userto='a'
group by userto
order by id desc"
但它显示了两条对话消息,但我只想显示一条对话消息
最佳答案
可以按查询尝试下列条件分组:
select *
from messeages
where userfrom='a' OR userto='a'
group by IF(userfrom > userto, userfrom,userto),
IF(userfrom > userto, userto,userfrom)
order by id desc
WORKING DEMO
注意:实际上在
GROUP BY
子句中,group by是基于以下逻辑完成的:GROUP BY greater value of (userfrom,userto), lower value of(userfrom,userto)
例子:
userfrom ='a' and userto='b'
userfrom ='b' and userto='a'
在上述两行中,较大值为“b”,较低值为“a”。因此,两行中的
GROUP BY
将首先应用于b
上,然后应用于a
。关于php - 在MySQL中按发送者接收者或接收者发送者分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38410702/