10
我有一個包含以下用戶數據的大表。在SQL中查找重複記錄
social security number
name
address
我想在表中查找 其中SSN等於所有可能的重複,但名字不是
我的嘗試是:
SELECT * FROM Table t1
WHERE (SELECT count(*) from Table t2 where t1.name <> t2.name) > 1
我有一個包含以下用戶數據的大表。在SQL中查找重複記錄
social security number
name
address
我想在表中查找 其中SSN等於所有可能的重複,但名字不是
我的嘗試是:
SELECT * FROM Table t1
WHERE (SELECT count(*) from Table t2 where t1.name <> t2.name) > 1
上SSN一個分組應該這樣做
SELECT
ssn
FROM
Table t1
GROUP BY
ssn
HAVING COUNT(*) > 1
..或者,如果你有每SSN很多行,只希望找到重名)
...
HAVING COUNT(DISTINCT name) > 1
編輯,哎呀,誤解
SELECT
ssn
FROM
Table t1
GROUP BY
ssn
HAVING MIN(name) <> MAX(name)
這將處理超過兩個記錄與重複ssn的:
select count(*), name from table t1, (
select count(*) ssn_count, ssn
from table
group by ssn
having count(*) > 1
) t2
where t1.ssn = t2.ssn
group by t1.name
having count(*) <> t2.ssn_count
你的答案似乎s給我行的名字是相同的。我想要名稱不相同的行 – Mark 2011-05-19 10:45:12
@Mark:標題顯示「找到重複項」,誤導了我。糾正。 – gbn 2011-05-19 10:51:38
我以爲我會需要自我加入。我喜歡最小/最大的想法。謝謝 – Mark 2011-05-19 11:02:11