Найти дубликаты в SQL
У меня есть большая таблица со следующими данными о пользователях.
social security number
name
address
Я хочу найти все возможные дубликаты в таблице
где ssn равно, но имя не
Моя попытка:
SELECT * FROM Table t1
WHERE (SELECT count(*) from Table t2 where t1.name <> t2.name) > 1
Ответы
Ответ 1
Группировка на SSN должна сделать это
SELECT
ssn
FROM
Table t1
GROUP BY
ssn
HAVING COUNT(*) > 1
.. или если у вас много строк на ssn и вы хотите найти дубликаты имен)
...
HAVING COUNT(DISTINCT name) > 1
Забастовкa >
Изменить, oops, misunderstood
SELECT
ssn
FROM
Table t1
GROUP BY
ssn
HAVING MIN(name) <> MAX(name)
Ответ 2
Это будет обрабатывать более двух записей с дублирующими ssn's:
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