记录一个MySql count细节问题

下面两条SQL查询结果会不一样吗?

select count(1) from 
  (select distinct `handler_name`, `retry_info`, `is_disabled` from handler) as alia;

select count(distinct `handler_name`, `retry_info`, `is_disabled`) from handler;

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(列名)时,为NULL时,不会统计在内,这个点,踩了个坑,这里记录一下,平时还是需要多注意下细节。

参考

https://blog.csdn.net/wendychiang1991/article/details/70909958/


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!