COUNT(DISTINCT column_name) 可统计每个分组中某字段的不同值个数,自动将NULL视为一个值;语法错误写法DISTINCT COUNT()不合法;大数据量时可建联合索引或使用近似函数优化。GROUP BY 后统计每个分组里某字段有多少个不同值直接用 COUNT(DISTINCT column_name) 就行,这是最常用也最直观的解法。它会在每个分组内部去重后再计数,不是全表去重。常见错误是写成 DISTINCT COUNT(column_name) ------ 这语法不合法,SQL 会报错 ERROR: syntax error at or near "COUNT"。使用场景比如:查每个部门有多少种不同的职级,或每个订单号对应多少个不重复的商品类目。COUNT(DISTINCT) 在 PostgreSQL、MySQL 5.7+、SQL Server 2017+、Oracle、SQLite3 中都支持MySQL 5.6 或更早版本不支持该语法,得用子查询模拟如果 column_name 允许 NULL,DISTINCT 会把所有 NULL 当作一个值处理(即多个 NULL 只算 1 次)遇到 NULL 值时 COUNT(DISTINCT) 怎么算COUNT(DISTINCT column_name) 默认忽略 NULL ------ 准确说是把所有 NULL 视为同一值,并计入去重结果中,但只要该分组里有至少一个 NULL,它就只贡献 1 次计数。如果你希望 NULL 完全不参与计数(即当某分组全是 NULL 时,结果为 0),得加条件过滤:SELECT dept_id, COUNT(DISTINCT CASE WHEN job_level IS NOT NULL THEN job_level END) AS distinct_levelsFROM employeesGROUP BY dept_id;注意这里不能写 COUNT(DISTINCT IF(job_level IS NOT NULL, job_level, NULL)),因为 MySQL 的 IF 返回 NULL 仍会被当作一个去重项;用 CASE 显式排除更可靠。 Felvin AI无代码市场,只需一个提示快速构建应用程序
相关推荐
Sylvia-girl1 小时前
C++内存如何管理?极创信息1 小时前
信创领域五种主流CPU架构(X86 / ARM / RISC-V / MIPS / LoongArch)向阳是我1 小时前
Flutter Android 编译错误修复:JVM Target Compatibility 不一致问题记录chaofan9801 小时前
突破大模型落地瓶颈:Claude 4.7 与 GPT-5.5 长上下文工程实测2501_901200531 小时前
PHP源码部署需要多大硬盘空间_PHP项目存储空间估算方法【方法】小肝一下1 小时前
3. 数据类型豆瓣鸡1 小时前
Agent实战练习2401_832365521 小时前
mysql如何优化mysql在多核CPU下的性能_调整线程并发数m0_736439301 小时前
JavaScript中显式创建包装对象的后果与性能损耗