首页 > 数据库 > mysql教程 > COUNT(column) 与 COUNT(*):什么时候应该使用每个 SQL 计数函数?

COUNT(column) 与 COUNT(*):什么时候应该使用每个 SQL 计数函数?

DDD
发布: 2025-01-13 15:07:43
原创
441 人浏览过

COUNT(column) vs. COUNT(*): When Should You Use Each SQL Count Function?

*SQL计数函数:COUNT(column)与COUNT()的差异及应用场景**

在SQL数据库中,计数操作是基础且常用的功能。然而,COUNT(column)COUNT(*)的选择会直接影响结果。本文将深入探讨这两个计数函数的关键区别。

COUNT(column)函数计算指定列中非NULL值的个数。如果某行在该列中包含NULL值,则该行将被排除在计数之外。此功能在计数唯一值或特定数据点时非常有用。

另一方面,COUNT(*)函数计算所选分组中的总行数,而不管列中是否包含NULL值。它同时计算非NULL值和NULL值。

当处理包含NULL值的表时,这种差异就变得显而易见。例如,考虑以下查询:

<code class="language-sql">SELECT column_name, COUNT(column_name)
FROM table
GROUP BY column_name
HAVING COUNT(column_name) > 1;</code>
登录后复制

此查询检索column_name的值出现不止一次的行组。但是,如果我们将COUNT(column_name)替换为COUNT(*),则会遇到潜在问题。

使用COUNT(*),查询将计算每个组中的所有行,包括column_name中包含NULL值的那些行。这可能会导致输出中额外增加一行,其中包含NULL值及其NULL值的计数。

为了说明这一点,考虑一个包含以下数据的表:

id id2
NULL NULL
1 NULL
NULL 1
1 NULL
NULL 1
1 NULL
NULL NULL

使用COUNT(id)的以下查询将返回正确的结果:

<code class="language-sql">SELECT id, COUNT(id)
FROM table
GROUP BY id
HAVING COUNT(id) > 1;</code>
登录后复制

输出:

id COUNT(id)
1 3

但是,如果我们使用COUNT(*),我们将得到额外的行:

<code class="language-sql">SELECT id, COUNT(*)
FROM table
GROUP BY id
HAVING COUNT(*) > 1;</code>
登录后复制

输出:

id COUNT(*)
1 3
NULL 2

如上所示,使用COUNT(*)的结果包含一个额外的行,其中id为NULL,计数为2,表示包含NULL id值的行的数量。

因此,COUNT(column)COUNT(*)的选择取决于具体的数据和所需的结果。COUNT(column)更适合于计算非NULL值,而COUNT(*)用于计算所有行,包括包含NULL值的那些行。

以上是COUNT(column) 与 COUNT(*):什么时候应该使用每个 SQL 计数函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板