有没有办法让GROUP BY使用一列,但是它可以为给定的组提供一组值?
例如,说我有记录:
id = 1, quantity = 40, type = 1
id = 2, quantity = 50, type = 2
id = 3, quantity = 20, type = 1
id = 4, quantity = 30, type = 3
id = 5, quantity = 60, type = 3
我想将类型1和2组合在一起,并将类型3组合在一起。有没有一种简单的方法可以在MySQL中执行此操作,或者在获得结果后我最好这样做吗?
答案 0 :(得分:2)
当然,您可以使用CASE语句创建自定义组:
select case when id in (1,2)
then '1,2'
else id
end as custom_id_group
...
group by case when id in (1,2)
then '1,2'
else id
end
编辑:
使用CASE语句的结果,通过别名,在GROUP BY子句中并不普遍支持RDBMS,但更新版本的MySQL(> = 5)将支持它。
答案 1 :(得分:0)
我建议使用两个查询并结合结果
答案 2 :(得分:0)
也许如果您使用“select *,if(type = 1或type = 2,'bigtype',type)作为group_by_clause group by group_by_clause。 我没试过呢
答案 3 :(得分:0)
你可以这样做:
select count(*), if(type in (1, 2), 12, type) t from table group by t