使用CASE Con​​dition函数对多个列进行分组

时间:2017-11-14 12:29:39

标签: android mysql sqlite

我使用两列userfromuserto在mysql中对行进行分组。我必须在a和b之间只选择一条会话消息。下面的查询完全符合我的要求,但是我想将它部署到android sqlite查询中,但是sqlite只接受CASE Con​​dition函数。

 SELECT * FROM messeages WHERE userfrom='a' OR userto='a' 
 group by 
     IF(userfrom > userto, userfrom,userto),
     IF(userfrom > userto, userto,userfrom)

有人可以帮助您使用CASE条件功能进行翻译。

1 个答案:

答案 0 :(得分:1)

documentation记录了这是如何工作的:

GROUP BY CASE WHEN userfrom > userto THEN userfrom ELSE userto END,
         CASE WHEN userfrom > userto THEN userto ELSE userfrom END;

但是,在这种情况下,您只需使用min() / max()的非聚合形式:

GROUP BY max(userfrom, userto),
         min(userfrom, userto);