第31期 SQL中COUNT(*)与COUNT(column)区别

来源:这里教程网 时间:2026-03-03 21:33:36 作者:

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 查询至关重要!

  • 相关推荐