表格如下:
id | state
1 | a
2 | a
3 | b
4 | c
5 | d
我想得到这样的结果:
state| count(*)
a | 2
b,c | 2
d | 1
有没有办法得到结果?使用' group by'或其他什么?
答案 0 :(得分:1)
你可以,但你需要在脚本中手动查询或硬编码:
select
case
when state = 'b' or state = 'c' then 'b,c'
else state
end as `state`,
count(*) as `count`
from `table`
修改强>
或者您可以将GROUP_CONCAT与辅助列一起使用,如:
id | state | grouping
1 | a | 1
2 | a | 1
3 | b | 2
4 | c | 2
5 | d | 3
然后
select group_concat(state), count(*)
from `table`
group by grouping
答案 1 :(得分:0)
您可以使用GROUP_CONCAT()
SELECT GROUP_CONCAT(state), COUNT(*)
FROM table
GROUP BY state;