如何在mysql中统计记录数量_mysql count函数用法

来源:这里教程网 时间:2026-02-28 20:32:50 作者:

COUNT() 是 MySQL 中最常用的聚合函数之一,专门用于统计行数。它不统计 NULL 值,但会统计所有非 NULL 字段(包括 0、空字符串等),使用时需注意语法细节和适用场景。

统计表中总行数(含 NULL)

COUNT(*) 最直接可靠,它不关心字段内容,只数物理行数,无论字段是否为 NULL 都计入:

SELECT COUNT(*) FROM users;

这是统计全表记录数的标准写法,执行效率高,尤其在 InnoDB 中通常能利用索引或元数据快速返回结果。

统计某列非 NULL 值的行数

COUNT(字段名) 只统计该字段值不为 NULL 的行数:

SELECT COUNT(email) FROM users;

如果 users 表中 email 字段有 100 条记录,其中 5 条是 NULL,则结果为 95。常用于检查数据完整性,比如确认多少用户填写了手机号:

SELECT COUNT(phone) AS filled_phone_count FROM users;

配合 WHERE 和 GROUP BY 精确统计

COUNT 常与条件筛选和分组搭配使用:

统计每个部门的员工数:SELECT dept, COUNT(*) FROM employees GROUP BY dept; 统计已激活用户的数量:SELECT COUNT(*) FROM users WHERE status = 'active'; 统计不同注册渠道的用户数:SELECT source, COUNT(*) FROM users GROUP BY source ORDER BY COUNT(*) DESC;

避免常见误区

以下写法容易出错或低效:

COUNT(1)COUNT(*) 效果相同,但无实际优势,不推荐刻意使用; COUNT(NULL) 永远返回 0,毫无意义; 对大表频繁执行 COUNT(*) 且无合适索引时,可能引发全表扫描,影响性能; 不要用 COUNT(id) 替代 COUNT(*) 除非你明确需要排除 id 为 NULL 的行(而主键 id 实际上不可能为 NULL)。

相关推荐