我有一个包含3列(ssn,名字,姓氏)的TABLE1。我使用此查询获得了表中重复SSN的列表:
SELECT SSN, COUNT(SSN) FROM TABLE1 GROUP BY SSN HAVING COUNT(SSN) > 1
现在我想获取表中所有记录,以查找我从上面的查询中获得的重复SSN。怎么做?我正在使用DB2。提前谢谢。
P.S。:我知道SSN应该是独一无二的,但奇怪的是我的表有不同名称的重复ssn。
答案 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
)