Подтвердить что ты не робот

Найти дубликаты в SQL

У меня есть большая таблица со следующими данными о пользователях.

social security number
name
address

Я хочу найти все возможные дубликаты в таблице где ssn равно, но имя не

Моя попытка:

SELECT * FROM Table t1
WHERE (SELECT count(*) from Table t2 where t1.name <> t2.name) > 1
4b9b3361

Ответ 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