我需要获取重复的行的行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;
使用窗口功能:
select t1.* from (select t1.*, count(*) over (partition by name) as cnt from table1 t1 ) t1 where cnt > 1;
该count(*) over (partition byname)计数计算每个名称的行数。但是,它是通过在每行上附加计数来实现的,而不是通过减少行数来实现的。这就是选择行所需的信息。
count(*) over (partition byname)