有没有办法通过使用' group by'来获得结果?

时间:2018-04-02 04:08:39

标签: mysql

表格如下:

id | state
1  | a 
2  | a 
3  | b 
4  | c 
5  | d 

我想得到这样的结果:

state| count(*)
a    | 2
b,c  | 2
d    | 1

有没有办法得到结果?使用' group by'或其他什么?

2 个答案:

答案 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;

参考:MySQL GROUP_CONCAT() function