首页  >  文章  >  数据库  >  COUNT(*) 与 COUNT(column_name):MySQL 中的区别是什么?

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

Patricia Arquette
Patricia Arquette原创
2024-11-21 06:39:11960浏览

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

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