根据不同情况group by不同字段
表格(user)
ID name value time
1 A 3 2018-1-1
1 A 4 2018-4-4
2 B 5 2018-1-2
3 C 6 2018-1-3
3 C 7 2018-4-6
根据flag变量在1时根据name分组,在值不等于1时根据value排序
set @flag=1
select * from (
select *,
(CASE
WHEN @flag=1 THEN name
WHEN @flag!=1 THEN value
END) gbstr
from user
)as a group by gbstr
方法是用case when then 按不同情况获取分组字段,如果是多个字段可以用CONCAT(str,str,…) 函数,将多个字段拼在一起,在外层用取好的分组字段gbstr