SQL COUNT DISTINCT 怎么用才正确?(正确.SQL.COUNT.DISTINCT...)

wufei123 发布于 2025-09-24 阅读(15)
COUNT(DISTINCT 列名)用于统计非空唯一值的数量,如SELECT COUNT(DISTINCT city) FROM users返回不重复城市数;NULL值被自动忽略,多列去重需用子查询实现,大数据量时建议建索引或使用近似函数优化性能。

sql count distinct 怎么用才正确?

在使用 SQL 的 COUNT(DISTINCT column_name) 时,核心是统计某一列中非重复值的个数。它常用于去重计数,比如统计不同用户、不同地区或不同类别的数量。

基本语法和作用

COUNT(DISTINCT 列名) 只会计算该列中唯一且非 NULL 的值出现的次数。例如:

SELECT COUNT(DISTINCT city) FROM users;

这句查询会返回 users 表中不重复的城市数量。如果 city 列有 "北京"、"上海"、"北京"、"广州",结果就是 3。

注意 NULL 值的影响

DISTINCT 会自动忽略 NULL 值。也就是说,即使某列有很多 NULL,它们不会被计入去重结果中。例如:

SELECT COUNT(DISTINCT email) FROM users;

如果 email 列中有重复邮箱还有多个 NULL,NULL 不参与计数,只统计不同的非空邮箱数量。

Teleporthq Teleporthq

一体化AI网站生成器,能够快速设计和部署静态网站

Teleporthq182 查看详情 Teleporthq 多列去重怎么办?

SQL 标准不支持直接写 COUNT(DISTINCT col1, col2)(MySQL 支持,但其他数据库如 PostgreSQL、Oracle 不行)。正确做法是使用子查询:

SELECT COUNT(*) FROM (
  SELECT DISTINCT department, role FROM employees
) AS unique_combinations;

先用 DISTINCT 找出两列组合的唯一行,再对外层计数。这是跨数据库通用的写法。

性能优化建议

当数据量大时,COUNT(DISTINCT) 可能变慢,因为需要排序或哈希去重。可以考虑:

  • 确保被统计的列有索引(尤其是单列场景)
  • 避免在大表上频繁执行高基数(high cardinality)的去重计数
  • 必要时用近似函数,如 Hive 中的 APPROX_COUNT_DISTINCT

基本上就这些。只要理解它只算“非空且唯一”的值,并掌握多列处理方式,就能正确使用。实际写的时候先测试小数据,确认逻辑无误再上线。

以上就是SQL COUNT DISTINCT 怎么用才正确?的详细内容,更多请关注知识资源分享宝库其它相关文章!

相关标签: mysql oracle 大数据 app ai 邮箱 上海 sql mysql NULL count select oracle hive postgresql 数据库 性能优化 大家都在看: 如何建立MySQL远程数据源_MySQL远程连接数据源配置方法 MySQL插入中文数据乱码怎么办_MySQL中文数据插入编码处理 MySQL数据源故障怎么排查_MySQL数据源常见问题解决方法 如何监控MySQL数据源状态_MySQL数据源连接状态监控方法 如何配置MySQL连接池数据源_MySQL连接池数据源设置详解

标签:  正确 SQL COUNT 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。