You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询COUNT(*)=1在指定SQL关联查询中的作用与含义

关于SQL中HAVING COUNT(*) = 1的作用解析

先提一句:你的SQL里WHERE子句存在语法问题(缺少闭合括号),不过不影响理解核心逻辑。

GROUP BY在这里的行为

你把SELECT语句里的所有字段都放进了GROUP BY子句,这意味着SQL会将所有选中字段值完全一致的行归为同一个分组。比如连接后有两行,AL1.ACCOUNTING_PERIOD、AL1.BUSINESS_AREA等所有字段的值完全相同,这两行会被合并成一个分组。

HAVING COUNT(*) = 1的具体作用

COUNT(*)统计的是每个分组内包含的原始行数。HAVING COUNT(*) = 1的作用就是只保留那些分组里仅包含1条原始数据的分组,过滤掉所有分组内行数≥2的结果。

换句话说,最终返回的都是这类数据:在两个表连接后,不存在任何其他与它所有选中字段完全重复的行。如果某条行有重复(哪怕只重复一次),都会因为分组后COUNT(*)≥2被过滤掉。

和不加HAVING的区别

不加HAVING时,不管每个分组里有多少行,都会被返回。比如有一个分组由3条完全重复的行组成,不加HAVING会返回这个分组(显示一条,因为GROUP BY合并了重复行),但加了HAVING COUNT(*) =1后,这个分组会被排除,不会出现在结果里。

内容的提问来源于stack exchange,提问作者Yasmine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:45:01