当前位置:   article > 正文

关于sql语句中的count(*),count(1),count(具体字段)的介绍

关于sql语句中的count(*),count(1),count(具体字段)的介绍

sql语句中有一个聚合函数count();这个函数里面可以写*,可以写数字(不仅仅只可以写1),可以写具体字段,他们之间有什么区别呢?

查阅资料得知,count(*)与count(1)在各种数据库服务器底层中,效果是一样的。就是分组后,能查出数据,就会记录1条,依次往上加。所以就算只有一个字段有值,也会被+1。在外连接查询的时候,经常会碰到很多字段为空(null)的情况。所以这个时候就得根据需求来确定count函数里面写什么。

count(具体字段)这种写法的意思是,只有当具体字段的值不为空(null)的时候,才会+1。所以有时候分组查询了很多条数据,但是那个具体字段一直是null的话,那么count(具体字段)返回的还是0。

这种情况在外连接里经常碰到,这个时候,用count(*或数字)与count(具体字段)所返回的值是有可能不同的,不同就在于具体字段有没有空(null)。有几个空(null),那么count(具体字段)就会比count(*或数字)少几条数据。

总结:

count(*)与count(数字)这种写法更容易理解的含义是:返回该分组数据的总条数,有多少条,就会返回多少(字段全是null的是不存在的,所以有多少条数据,就会返回多少)。

count(具体字段)这种写法更容易理解的含义是:返回该具体字段在分组数据中不为空(null)的条数,有多少条不为空(null),就会返回多少。

性能方面:count(*)的性能等于count(数字)大于count(具体字段)

因为在sql的引擎中,分完组之后,count(*)与count(数字)其实结果就已经出来了,但是如果写了count(具体字段),引擎还会在遍历一遍分完组的数据,统计具体字段不为空(null)的条数,然后返回出来。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/910936
推荐阅读
相关标签
  

闽ICP备14008679号