假設要分別統計 小明,小王,小紅 三人本學期遲到次數。
由於小王沒有遲到過,所以缺勤流水表格當中沒有小王的記錄,如果我們這樣搜索:
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