我正在尝试制作邮件的收件箱部分。我的问题是这样的。
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"
但它显示了两个会话消息,但我只想显示一个会话消息
答案 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
注意:实际上在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
。