SELECT COUNT(case when age>15 then scone ELSE 1 end) FROM `t_z_test1`;
SELECT COUNT(case when age>15 then scone ELSE 1 end) FROM `t_z_test1`;
MySQL执行这条sql时会每条记录的去执行count里的条件 如果满足age>15就对当前记录执行count(scone),不满足就对当前记录执行count(1)。
这里有个注意点就是如果不用case when 而直接加上判断条件比如:
SELECT COUNT(age>15) FROM `t_z_test1`;这样无论是true还是false都是统计所有。因为mysql里的true或false就是0和1所以这里也就变成了SELECT COUNT(0) FROM `t_z_test1`或者SELECT COUNT(1) FROM `t_z_test1`.而count(任何数字)的效果都相当于count(*)所以要想这里生效就得加个or null,比如:SELECT COUNT(0) FROM `t_z_test1`,这样告诉mysql如果不满足前面条件就执行count(null)。