COUNT()配合WHERE可统计满足条件的行数,如COUNT(*)统计所有非NULL行,COUNT(列名)仅统计该列非NULL的行,支持GROUP BY分组及COUNT(DISTINCT 列名)去重统计。

直接用 COUNT() 配合 WHERE 子句,就能统计满足条件的行数。
基础语法:COUNT() + WHERE
COUNT() 用于返回匹配指定条件的行数。最常用的是 COUNT(*),它统计所有非 NULL 行(实际上对每一行都计数,包括含 NULL 值的列)。
写法示例:
SELECT COUNT(*) FROM users WHERE status = 'active';这条语句会返回 users 表中 status 为 'active' 的记录总数。
统计特定列非 NULL 的数量
如果只关心某列有值(不为 NULL)的行数,可以写成:
SELECT COUNT(email) FROM users WHERE status = 'active';这时只会统计 email 列不为 NULL 的活跃用户数。若某条活跃用户记录的 email 是 NULL,它就不会被计入。
结合 GROUP BY 分组统计
想按某个字段分类统计符合条件的数量,加上 GROUP BY:
FROM employees
WHERE hire_date >= '2020-01-01'
GROUP BY department;
结果会列出每个部门里 2020 年及以后入职的员工人数。
注意几个常见细节
-
COUNT(*)性能通常优于COUNT(列名),尤其在有索引时;数据库优化器一般能高效处理* -
COUNT(NULL)永远返回 0,因为COUNT()本身会忽略 NULL 值 - 如果
WHERE条件没匹配到任何行,COUNT()返回 0,不是 NULL - 想统计“去重后的数量”,用
COUNT(DISTINCT 列名),例如:COUNT(DISTINCT city)

















