在SQL的日常查询操作中,统计符合条件的记录数量是高频需求,而COUNT函数就是实现这一需求最基础也最常用的工具。下面我们先通过一张示意图片直观了解COUNT函数的应用场景:

COUNT函数的基本语法
COUNT函数属于SQL的聚合函数,用于统计指定范围内的非NULL值数量,基础语法格式如下:
-- 基础语法 COUNT(参数) -- 完整查询语法 SELECT COUNT(参数) FROM 表名 WHERE 筛选条件;
其中参数可以是*、具体的列名,或者DISTINCT 列名,不同的参数对应不同的统计逻辑。
不同参数的使用差异
COUNT(*)
COUNT(*)会统计表中所有符合条件的记录数,不管记录中的字段是否为NULL,只要是一条完整的记录就会被计入。这是最常用的统计全表或符合条件记录总数的方式。
-- 统计用户表所有记录数 SELECT COUNT(*) AS total_user FROM user_info; -- 统计年龄大于18岁的用户数 SELECT COUNT(*) AS adult_user FROM user_info WHERE age > 18;
COUNT(列名)
COUNT(列名)只会统计指定列中值不为NULL的记录数,如果该列某条记录的值为NULL,这条记录不会被计入统计结果。
-- 统计用户表中填写了邮箱的用户数,邮箱为NULL的不计入 SELECT COUNT(email) AS has_email_user FROM user_info;
COUNT(DISTINCT 列名)
COUNT(DISTINCT 列名)会先对指定列的值去重,再统计去重后非NULL值的数量,常用于统计某列不重复的值的个数。
-- 统计用户表中不重复的城市数量 SELECT COUNT(DISTINCT city) AS city_count FROM user_info;
使用注意事项
- COUNT函数会和GROUP BY子句配合使用,实现分组统计,比如统计每个城市的用户数:
-- 按城市分组统计每个城市的用户数 SELECT city, COUNT(*) AS user_count FROM user_info GROUP BY city;
- COUNT函数统计时会忽略NULL值,如果需要统计包含NULL的记录,要使用COUNT(*)。
- COUNT函数可以和WHERE子句结合,先筛选符合条件的记录再统计,不需要先查出所有记录再手动计数,效率更高。
常见使用场景总结
| 场景 | 推荐用法 |
|---|---|
| 统计全表或符合条件的所有记录数 | COUNT(*) |
| 统计某列非NULL值的记录数 | COUNT(列名) |
| 统计某列不重复的非NULL值数量 | COUNT(DISTINCT 列名) |
| 分组统计各组的记录数 | 结合GROUP BY使用COUNT(*) |
掌握COUNT函数的这些用法,就可以应对大部分SQL查询中统计记录数的需求,在实际使用时根据具体的统计目标选择合适的参数即可。