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

如何在SQL Server中查询特定列值重复的行?

解决SQL Server中筛选列值重复出现行的问题

你的Data表数据如下:

ColAColBColC
JohnSmith1234
DavidSmith3456
ScottClark198
BrianWilliams155
JeremyWilliams765

要返回ColB列值出现多次的行,有两种常用方法,都用到了你猜测的COUNT函数:

方法一:子查询 + GROUP BY

先通过子查询找出ColB中出现次数≥2的取值,再关联原表获取完整行数据:

SELECT d.*
FROM Data d
INNER JOIN (
    SELECT ColB
    FROM Data
    GROUP BY ColB
    HAVING COUNT(*) >= 2
) dup ON d.ColB = dup.ColB;

逻辑说明:

  1. 子查询里通过GROUP BY ColB分组,用HAVING COUNT(*) >=2筛选出重复的ColB值;
  2. 用INNER JOIN关联原表,只保留这些重复ColB对应的行。

方法二:窗口函数(SQL Server 2008及以上支持)

用COUNT() OVER(PARTITION BY ColB)窗口函数直接计算每行对应的ColB出现次数,再筛选次数≥2的行:

SELECT ColA, ColB, ColC
FROM (
    SELECT 
        ColA, ColB, ColC,
        COUNT(*) OVER(PARTITION BY ColB) AS ColBCount
    FROM Data
) t
WHERE ColBCount >= 2;

逻辑说明:

  1. 内层查询给每行添加一个ColBCount字段,值为当前行ColB在表中的总出现次数;
  2. 外层查询筛选出ColBCount≥2的行,也就是ColB重复的行。

这两种方法都能得到你需要的结果,窗口函数的写法不需要额外关联,在数据量较大时性能表现也不错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:05:21