我正在试着制作一个收件箱中的信息部分。我的问题是这样的。
标识用户从用户到
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/

10-11 05:24