Возможно ли для SQL найти записи с дубликатами? - PullRequest
5 голосов
/ 13 января 2010

Можно ли использовать запрос SQL для поиска записей, в которых одно поле одинаково в обоих? То есть можно ли использовать следующую таблицу и вернуть 1,3 (идентификаторы), сравнив столбцы имен (и игнорируя телефон)?

    ID | Name | Phone

    1  | Bob  | 5555555555
    2  | John | 1234567890
    3  | Bob  | 1515151515
    4  | Tim  | 5555555555

Ответы [ 3 ]

10 голосов
/ 13 января 2010

Чтобы получить все имена, которые существуют более одного раза, вы можете выполнить этот оператор:

SELECT Name FROM People GROUP BY Name HAVING COUNT(*)>1;
2 голосов
/ 13 января 2010

Чтобы получить идентификаторы дубликатов "1,3", соединенных таким образом, используйте GROUP_CONCAT :

SELECT GROUP_CONCAT( ID SEPARATOR ',' )
FROM Table
GROUP BY Name
HAVING COUNT(*) > 1
0 голосов
/ 13 января 2010

Другой, не обязательно эффективный, способ сделать это с помощью самостоятельного соединения:

SELECT P1.Id, P2.Id
  FROM People P1, People P2
 WHERE P1.Id < P2.Id
   AND P1.Name = P2.Name;

Первое условие гарантирует, что вы видите только пару (1,3), а не посторонние пары (3,1) или идентичные строки (1,1), (3,3).

...