SELECT COUNT(*) 和 COUNT(column) 是不同的
在SQL中,
COUNT(*) 和
COUNT(column) 是两个常用的聚合函数,但它们的行为和结果可能会有所不同。
理解它们之间的区别对于编写正确的查询非常重要。
COUNT(*)
COUNT(*) 用于计算表中的行数,包括所有行,无论列中的值是否为
NULL。它的作用是统计表中的总行数。
例如:
SELECT COUNT(*) FROM employees;
这条查询会返回
employees 表中的总行数,无论某些列是否包含
NULL 值。
COUNT(column)
COUNT(column) 则用于计算指定列中非
NULL 值的数量。它只会统计那些在指定列中有值的行。
例如:
SELECT COUNT(employee_id) FROM employees;
这条查询会返回
employee_id 列中非
NULL 值的数量。如果某些行的
employee_id 为
NULL,这些行将不会被计入总数。
区别总结
COUNT(*) 统计表中的所有行,包括
NULL 值。
COUNT(column) 只统计指定列中非
NULL 值的行。
示例
假设我们有一个
employees 表,数据如下:
| employee_id | name | department |
|---|---|---|
| 1 | John | Sales |
| 2 | Jane | NULL |
| 3 | NULL | HR |
| 4 | Alice | IT |
SELECT COUNT(*) FROM employees; 会返回
4,因为表中有4行。
SELECT COUNT(name) FROM employees; 会返回
3,因为
name 列中有3个非
NULL 值。
SELECT COUNT(department) FROM employees; 会返回
3,因为
department 列中有3个非
NULL 值。
结论
在使用
COUNT 函数时,务必根据你的需求选择正确的形式。
如果你需要统计表中的总行数,使用
COUNT(*);
如果你只关心某一列中非
NULL 值的数量,则使用
COUNT(column)。
COUNT(*) :统计所有行,无论列值是否为 NULL。
COUNT(column) :只统计该列中非空值的数量。
理解这两者的区别对于编写正确的 SQL 查询至关重要!
