Для SQL действительно ли возможно найти записи с дубликатами?

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

    ID | Name | Phone

    1  | Bob  | 5555555555
    2  | John | 1234567890
    3  | Bob  | 1515151515
    4  | Tim  | 5555555555
5
задан waiwai933 13 January 2010 в 00:34
поделиться

3 ответа

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

SELECT Name FROM People GROUP BY Name HAVING COUNT(*)>1;
10
ответ дан 13 December 2019 в 05:35
поделиться

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

SELECT GROUP_CONCAT( ID SEPARATOR ',' )
FROM Table
GROUP BY Name
HAVING COUNT(*) > 1
2
ответ дан 13 December 2019 в 05:35
поделиться

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

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).

0
ответ дан 13 December 2019 в 05:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: