由MySQL中的发送方接收方或接收方发送方分组

时间:2016-07-16 11:25:54

标签: php mysql

我正在尝试制作邮件的收件箱部分。我的问题是这样的。

id userfrom userto

1 a b

2 b a
现在我必须在a和b之间只选择一条会话消息。我也尝试了一些这样的mysql查询

$query="select * 
        from messages 
        where userfrom='a' || userto='a' 
        group by userto 
        order by id desc"

但它显示了两个会话消息,但我只想显示一个会话消息

1 个答案:

答案 0 :(得分:2)

您可以通过查询尝试以下条件组:

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'因此,GROUP BY行将首先应用于b,然后应用于a