2016-09-21 38 views
0

我有3列(ssn,名字,姓氏)在其中的TABLE1。我用這個查詢得到重複的核動力攻擊型潛艇在表的列表:如何獲取重複值的表記錄?

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

現在我想表中的所有記錄重複的核動力攻擊型潛艇,我從查詢中獲得的上方。怎麼做?我正在使用DB2。提前致謝。

P.S .:我知道SSN應該是唯一的,但奇怪的是我的表具有不同名稱的ssn。

+0

只要名稱是唯一個體的別名,SSN就可以與多個名稱相關聯。例如,我有兩個在SSA註冊的名字。 – user2338816

回答

1

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

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

使用窗口功能:

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

如果可以使用,其中與子查詢

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

這是通過對每個重複分配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 
)