关于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才不会统计上这条记录数

:punch: :punch::punch:

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 2

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!