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

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

10 голосов
/ 19 мая 2011

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

social security number
name
address

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

Моя попытка:

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

Ответы [ 2 ]

14 голосов
/ 19 мая 2011

Группировка по 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)
0 голосов
/ 19 мая 2011

Это будет обрабатывать более двух записей с дубликатами 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...