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)。