如何获取重复值的表记录?

时间:2016-09-21 19:44:38

标签: sql db2

我有一个包含3列(ssn,名字,姓氏)的TABLE1。我使用此查询获得了表中重复SSN的列表:

SELECT SSN, COUNT(SSN) FROM TABLE1 GROUP BY SSN HAVING COUNT(SSN) > 1

现在我想获取表中所有记录,以查找我从上面的查询中获得的重复SSN。怎么做?我正在使用DB2。提前谢谢。

P.S。:我知道SSN应该是独一无二的,但奇怪的是我的表有不同名称的重复ssn。

4 个答案:

答案 0 :(得分:1)

您可以在IN子句中使用它。

SELECT * 
FROM TABLE1
WHERE SSN IN (SELECT SSN FROM TABLE1 GROUP BY SSN HAVING COUNT(SSN) > 1)

答案 1 :(得分:1)

使用窗口功能:

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

答案 2 :(得分:0)

如果可以在子选择中使用where in

 select * from TABLE1 
 where  ssn in (
   SELECT SSN FROM TABLE1 GROUP BY SSN HAVING COUNT(*) > 1
 )

答案 3 :(得分:0)

这可以通过为每个副本分配一个rownumber并仅选择那个比一个更多的rownumber来实现。

 SELECT * 
 FROM TABLE1
 WHERE SSN IN (
    select ssn from (
       select ssn, row_number() over (partition by ssn) as rang from table1
                    ) tmp 
    where rang>1 
 )