首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按所有枚举值分组,但不指定枚举值

按所有枚举值分组,但不指定枚举值
EN

Stack Overflow用户
提问于 2013-12-11 12:24:52
回答 1查看 770关注 0票数 0

给定一个包含一些值(如a, b, c )的ENUM列,我希望查询表,对该列执行GROUP BY操作,这样即使没有找到行,也会返回默认数字(0)。

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

是否可以在不指定列的ENUM值的情况下执行此操作?

例如,使用以下数据:

3行包含'a',2行包含'b',0行位于'c',

代码语言:javascript
复制
SELECT COUNT(*), enum FROM
`table`
GROUP BY enum

将返回'a‘和'b’的结果,但不返回'c‘的结果。如何获取所有可能的ENUM值?

EN

回答 1

Stack Overflow用户

发布于 2013-12-11 12:42:44

你需要一个控制表..然后左连接

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20510474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档