按所有枚举值分组而不指定枚举值

时间:2013-12-11 04:24:52

标签: mysql sql enums case

如果ENUM列中包含a, b, c等值,我希望查询表GROUP BY列,即使没有行,也会返回默认数字(0)找到。

我看过使用CASE column WHEN 'a' THEN count = 0https://stackoverflow.com/a/12348380/1097483)的答案,但这需要我指定所有ENUM值。

是否可以在不指定列的ENUM值的情况下这样做?

例如,包含以下数据:

3行' a',2行' b' 0行' c',

SELECT COUNT(*), enum FROM
`table`
GROUP BY enum

将返回' a'的结果并且' b'但不是' c'。如何获取所有可能的ENUM值?

1 个答案:

答案 0 :(得分:0)

你需要一个控制表..然后离开加入

create table enumtbl (
  enum varchar(10)); 

create table tbl (
  enum varchar(10));

insert into enumtbl values ('A');
insert into enumtbl values ('B');
insert into enumtbl values ('C');

insert into tbl values ('A');
insert into tbl values ('A');
insert into tbl values ('A');
insert into tbl values ('A');
insert into tbl values ('B');
insert into tbl values ('B');


select e.enum, coalesce(t.cnt,0) as cnt
from enumtbl e
left join (
    select enum, count(*) as cnt
    from tbl
    group by enum) t
  on e.enum = t.enum;

sqlfiddle