关于mysql count的理解

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)

由于对count理解不到位导致写出了下面错误的sql,这个是要统计fund_investor这个表所有记录数和commitment大于0的记录数

SELECT
    count(fund_investor.id),
    count(fund_investor.commitment > 0)
FROM
    fund_investor
WHERE
    fund_investor.delete_flag = 0

上面的第二列数据是错误的,原因在于commitment 和 0 比较是一个布尔值,而不是null,导致被统计到了数据中

sql : select 1>0
结果: 1

改写成下面的sql即正确

SELECT
    count(fund_investor.id) 
    count(if(fund_investor.commitment > 0,1,null)) 
FROM
    fund_investor
WHERE
    fund_investor.delete_flag = 0
原文地址:https://www.cnblogs.com/xushy/p/15043148.html