怎样使 mysql count(*) 统计项可以显示为 0

假设要分别统计 小明,小王,小红 三人本学期迟到次数。

由于小王没有迟到过,所以缺勤流水表格当中没有小王的记录,如果我们这样搜索:

1 select name, count(*) from {缺勤流水表格} where name in (小明,小王,小红) group by name

那么我们得到的将是:

小明  3

小红  4

并没有小王的记录!

解决方法 -- 运用CASE WHEN语句:

1 slelct name, count(case when name in (小明,小王,小红) then 1 else 0 end)  from {缺勤流水表格}  group by name

得到的结果为:

小明  3

小王  0

小红  4

 另外说一下,不是每中情况下都能找到这样的 case when语句,也有可能需要我们对sql语句改动一下,例如:

 

1 select t1.name,  ifnull( t2.count,0)  from {缺勤流水表格} as t1
2 
3 join
4 
5 (select id, name, count(*) as count from {缺勤流水表格} where name in (小明,小王,小红) group by name) as t2
6 
7 on t1.id = t2.id

 

posted @ 2017-08-02 21:32  glorythesky  阅读(10288)  评论(2编辑  收藏  举报