Я могу использовать SQL-запрос для нахождения записей, где одно поле идентично в обоих? Таким образом, я могу использовать следующую таблицу и возвратиться 1,3 (идентификаторы) путем сравнения столбцов имени (и игнорирования телефона)?
ID | Name | Phone 1 | Bob | 5555555555 2 | John | 1234567890 3 | Bob | 1515151515 4 | Tim | 5555555555
Чтобы получить все имена, которые существуют более одного раза, вы сможете выполнить это утверждение:
SELECT Name FROM People GROUP BY Name HAVING COUNT(*)>1;
Чтобы получить идентификаторы дубликатов «1,3» объединены таким образом, используйте GROUP_CONCAT :
SELECT GROUP_CONCAT( ID SEPARATOR ',' )
FROM Table
GROUP BY Name
HAVING COUNT(*) > 1
Другой - не обязательно эффективный - способ сделать это с самоуверенностью:
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).