首页 >数据库 >mysql教程 >COUNT(column) 与 COUNT(*):何时应该在 SQL 中使用 Which?

COUNT(column) 与 COUNT(*):何时应该在 SQL 中使用 Which?

Patricia Arquette
Patricia Arquette原创
2025-01-13 15:01:44515浏览

COUNT(column) vs. COUNT(*): When Should I Use Which in SQL?

*SQL中COUNT(column)与COUNT()的差异详解**

在SQL查询中,count()函数用于数据聚合,但count(column)count(*)两种常用形式之间存在细微却重要的差异。

COUNT(column):排除NULL值

count(column)语法统计指定列中非NULL值的个数,有效忽略列值为NULL的行。当需要确定列中非空值的个数时,此特性非常有用。

*COUNT():包含NULL值**

相比之下,count(*)统计结果集中的行数,包括包含NULL值的行。与count(column)不同,它将NULL视为有效计数项。当需要获取总行数,而不管特定列是否包含缺失数据时,此特性非常有用。

示例说明差异

考虑一个名为#bla的表,包含以下记录:

<code class="language-sql">create table #bla(id int,id2 int)
insert #bla values(null,null)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,null)</code>

使用count(column)运行以下查询:

<code class="language-sql">select count(id),count(id2)
from #bla</code>

结果为:

<code>3   2</code>

其中,count(id)仅统计id列中的三个非NULL值,而count(id2)统计id2列中的两个非NULL值。

但是,用count(*)替换count(column),结果为7,如下查询所示:

<code class="language-sql">select count(*)
from #bla</code>

在这种情况下,count(*)包含表中的七行,无论它们是否包含NULL值。在处理包含缺失数据的dataset时,这种统计非NULL值和统计行的区别变得尤为重要。

以上是COUNT(column) 与 COUNT(*):何时应该在 SQL 中使用 Which?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn