sqlserver数据库 count(1),count(*),count(列名) 的区别

我们在写SQL统计数据的时候都会用到count,但是简单的count在统计的时候也要注意其特性,稍不注意,就会造成统计数据错误。

我们以sqlserver数据库 为例,看看count(1),count(*),count(列名) 的区别

  1. count(*) 包括了所有的列,在统计结果的时候,不会忽略列值为NULL,所以count(*)统计的是全量数据。
  2. count(1) 用1代表数据行,在统计结果的时候,不会忽略列值为NULL,因为用1替代了NULL,相当于每行都是有值的,所以count(1)统计的是全量数据。
  3. count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空的列进行计数,忽略的空列也就是其值为NULL的的数据,注意NULL是可不是填进去了‘NULL’的字符串,而是数据库本身认定的值为NULL。