我有3列(ssn,名字,姓氏)在其中的TABLE1。我用這個查詢得到重複的核動力攻擊型潛艇在表的列表:如何獲取重複值的表記錄?
SELECT SSN, COUNT(SSN) FROM TABLE1 GROUP BY SSN HAVING COUNT(SSN) > 1
現在我想表中的所有記錄重複的核動力攻擊型潛艇,我從查詢中獲得的上方。怎麼做?我正在使用DB2。提前致謝。
P.S .:我知道SSN應該是唯一的,但奇怪的是我的表具有不同名稱的ssn。
我有3列(ssn,名字,姓氏)在其中的TABLE1。我用這個查詢得到重複的核動力攻擊型潛艇在表的列表:如何獲取重複值的表記錄?
SELECT SSN, COUNT(SSN) FROM TABLE1 GROUP BY SSN HAVING COUNT(SSN) > 1
現在我想表中的所有記錄重複的核動力攻擊型潛艇,我從查詢中獲得的上方。怎麼做?我正在使用DB2。提前致謝。
P.S .:我知道SSN應該是唯一的,但奇怪的是我的表具有不同名稱的ssn。
您可以在IN
子句中使用它。
SELECT *
FROM TABLE1
WHERE SSN IN (SELECT SSN FROM TABLE1 GROUP BY SSN HAVING COUNT(SSN) > 1)
使用窗口功能:
select t.*
from (select t.*, count(*) over (partition by ssn) as cnt
from table1
) t
where cnt > 1;
如果可以使用,其中與子查詢
select * from TABLE1
where ssn in (
SELECT SSN FROM TABLE1 GROUP BY SSN HAVING COUNT(*) > 1
)
這是通過對每個重複分配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
)
只要名稱是唯一個體的別名,SSN就可以與多個名稱相關聯。例如,我有兩個在SSA註冊的名字。 – user2338816