关于count函数的理解
count函数的基础理解
count()函数是用来统计表中记录的一个函数,返回匹配条件的行数。
count函数的基础语法说明
(1)count(*)---包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录。
(2)count(1)---忽略所有列,1表示一个固定值,也可以用count(2)、count(3)代替,在统计结果的时候,不会忽略列值为NULL的记录。
(3)count(列名)---只包括列名指定列,返回指定列的记录数,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内。
(4)count(distinct 列名)---只包括列名指定列,返回指定列的不同值的记录数,在统计结果的时候,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内。
count函数的进阶语法说明
count(id_mt > 0 or null)
这个是count函数中传入的是表达式,这个我们怎么理解呢?
为了大家理解清楚,我举个🌰
1、sql 语句中count()有条件的时候为什么要加上or null。
如count(province = '浙江' or NULL) 这部分,为什么要加上or NULL,直接count(province='浙江')有什么问题吗?不就是要找province = '浙江'的数据吗,为什么要计算NULL的数据。
答案:
因为当 province不是浙江时 province='浙江' 结果false。不是 NULL,count在值是NULL是不统计数, (count('任意内容')都会统计出所有记录数,因为 count只有在遇见null时不计数,即count(null)==0,因此前者单引号内不管输入什么值都会统计出所有记录数),至于加上or NULL , 很像其他编程里的or运算符,第一个表达式是true就是不执行or后面的表达式,第一个表达式是false 执行or后面的表达式 。当province不为浙江时province = '浙江' or NULL 的结果是NULL,Count才不会统计上这条记录数
本作品采用《CC 协议》,转载必须注明作者和本文链接
受教了
学到了