首页/数据/SQL 速查/COUNT(DISTINCT) 去重计数
本包目录(311 条)
查询基础33 条连接与子查询40 条
聚合与窗口函数54 条
函数速查60 条变更与事务52 条性能与执行计划72 条

COUNT(DISTINCT) 去重计数

统计去重后的个数,例如独立用户数;NULL 不参与计数,MySQL 还支持多列组合去重。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT COUNT(DISTINCT user_id) AS uv
FROM visits
WHERE dt = '2024-06-01';

-- MySQL 支持多列组合去重
SELECT COUNT(DISTINCT user_id, dt) FROM visits;
NULL忽略 NULL;全为 NULL 时结果为 0
多列MySQL 支持 COUNT(DISTINCT a, b);PostgreSQL 需要子查询先去重
大表去重计数内存开销大,海量数据参考近似统计方案

易错点

  • PostgreSQL 里写 COUNT(DISTINCT a, b) 会报错,需先 SELECT DISTINCT a, b 再 COUNT(*)
  • COUNT(DISTINCT col) 与 COUNT(col) 结果不同时,先确认数据里是否存在重复

数据来源与参考

  • MySQL 8.0 Reference Manual · COUNT DISTINCT
  • PostgreSQL Documentation · Aggregate Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌