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

SQL Server中DISTINCT关键字用法及单语句统计多字段去重数

嘿,我来帮你理清SQL Server里DISTINCT的用法,还有你要的单条语句统计每个字段去重数量的方法~

先搞懂DISTINCT的核心作用

首先得明确:DISTINCT是对整行返回数据进行去重,而不是针对单个字段生效。你之前尝试的select id, distinct name, age这类写法是不符合SQL语法的——DISTINCT只能放在SELECT关键字之后,作用于所有返回字段的组合。比如select distinct id, name, age from dbo.XXX,这条语句返回的是id+name+age三者组合起来不重复的行,并不是每个字段单独去重后的结果。

单条SQL统计每个字段的去重数量

如果想要在一条语句里分别统计id、name、age各自的去重种类数量,你需要用COUNT(DISTINCT 字段名)的写法,具体实现如下:

select 
    COUNT(DISTINCT id) as distinct_id_count,
    COUNT(DISTINCT name) as distinct_name_count,
    COUNT(DISTINCT age) as distinct_age_count
from dbo.XXX

执行这条语句后,你会得到一行结果,三个列分别对应id、name、age的去重数量。

举个实际例子,假设你的表数据是:

idnameage
1Alice25
1Bob25
2Alice30
2Alice30

执行上面的SQL后,结果会是:

distinct_id_countdistinct_name_countdistinct_age_count
222
补充小提示
  • 如果你的需求是查看每个字段的所有去重值(而不是数量),那可能需要用UNION或者子查询的方式实现,但如果只是统计数量,COUNT(DISTINCT)是最直接高效的方案。
  • 注意:如果字段存在NULL值,COUNT(DISTINCT)会自动忽略NULL,因为SQL里NULL和NULL并不被视为相等的重复值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:19:25