如果ENUM
列中包含a, b, c
等值,我希望查询表GROUP BY
列,即使没有行,也会返回默认数字(0)找到。
我看过使用CASE column WHEN 'a' THEN count = 0
(https://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值?
答案 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;