理解 COUNT(*) 和 COUNT(column_name) 之间的区别
MySQL 提供了两个计数函数:COUNT(*) 和 COUNT(列名)。这两个函数都会计算结果集中的行数,但它们对 NULL 值的处理有所不同。
COUNT(*)
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中文网其他相关文章!