*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中文网其他相关文章!