admin

返回具有重复数据的行的ID

sql

我需要获取重复的行的行ID

Select Name from table1 group by Name having count(1) > 1

表格1

ID | Name    | ClientID
----------------------------
01 | John    |  01
02 | Sam     |  01
03 | Sue     |  01
04 | John    |  02
05 | John    |  01

唯一的问题是,由于我在同一张表上有多个客户端,并且我不想将其他客户端的名称视为重复项,因此它只会返回“名称”而不是列的ID。

那么,有没有一种方法可以在表中查找重复的数据并返回行的ID,以便我可以在其他查​​询中使用这些ID?

答案我去修改了

谢谢大家给我的答案,这是我标记为答案的答案的修改。

select t1.*
from (select count(*) over (partition by entityname) as cnt ,t1.*
      from table1 t1 where ClientID = 1
     ) t1
where cnt > 1 and ClientID = 1 order by cnt;

阅读 138

收藏
2021-06-07

共1个答案

admin

使用窗口功能:

select t1.*
from (select t1.*, count(*) over (partition by name) as cnt
      from table1 t1
     ) t1
where cnt > 1;

count(*) over (partition byname)计数计算每个名称的行数。但是,它是通过在每行上附加计数来实现的,而不是通过减少行数来实现的。这就是选择行所需的信息。

2021-06-07