COUNT(*) 与 COUNT(column_name):MySQL 中的区别是什么?

Patricia Arquette
发布: 2024-11-21 06:39:11
原创
959 人浏览过

COUNT(*) vs. COUNT(column_name): What's the Difference in MySQL?

理解 COUNT(*) 和 COUNT(column_name) 之间的区别

MySQL 提供了两个计数函数:COUNT(*) 和 COUNT(列名)。这两个函数都会计算结果集中的行数,但它们对 NULL 值的处理有所不同。

COUNT(*)

  • 计算所有行在结果集中,包括任何列中具有 NULL 值的行。
  • 语法: COUNT(*)

COUNT(column_name)

  • 仅对指定列 (column_name) 不为 NULL 的行进行计数。
  • 语法: COUNT(column_name)

主要差异

Feature COUNT(*) COUNT(column_name)
NULL Values Includes rows with NULL values Excludes rows with NULL values
Performance May be slower in some cases even if the column has no NULL values Generally slower due to the need to check each value

COUNT(1)

COUNT(1)相当于 COUNT(*)。这是因为 1 永远不可能为 NULL。因此,它还会计算结果集中的所有行。

示例

考虑下面名为“table1”的表:

CREATE TABLE table1 (x INT NULL);
INSERT INTO table1 (x) VALUES (1), (2), (NULL);
登录后复制

现在,我们来比较一下三个计数的结果函数:

SELECT
    COUNT(*) AS a,
    COUNT(x) AS b,
    COUNT(1) AS c
FROM table1;
登录后复制

结果:

a   b   c
3   2   3
登录后复制

如您所见,COUNT() 计算所有三行,无论 NULL 值如何“x”列。 COUNT(x) 排除具有 NULL 值的行,导致计数为 2。COUNT(1) 产生与 COUNT() 相同的结果,因为 1 不能为 NULL。

以上是COUNT(*) 与 COUNT(column_name):MySQL 中的区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

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