Предыдущий администратор баз данных управлял нереляционной таблицей с 2,4 млн записей, все с уникальными идентификаторами.Однако в каждой записи есть повторяющиеся записи с разными данными, например:
+---------+---------+--------------+----------------------+-------------+
| id | Name | Address | Phone | Email | LastVisited |
+---------+---------+--------------+---------+------------+-------------+
| 1 | bob | 12 Some Road | 02456 | | |
| 2 | bobby | | 02456 | bob@domain | |
| 3 | bob | 12 Some Rd | 02456 | | 2010-07-13 |
| 4 | sir bob | | 02456 | | |
| 5 | bob | 12SomeRoad | 02456 | | |
| 6 | mr bob | | 02456 | | |
| 7 | robert | | 02456 | | |
+---------+---------+--------------+---------+------------+-------------+
Это не точная таблица - в реальной таблице 32 столбца - это просто для иллюстрации
Я знаюкак идентифицировать дубликаты, в этом случае я использую номер телефона.Я извлек дубликаты в отдельную таблицу - всего 730 тыс. Записей.
Каков был бы наиболее эффективный способ объединения этих записей (и пометки ненужных записей для удаления)?
Я рассмотрел использование UPDATE с INNER JOIN, но необходимо несколько предложений WHERE, потому что я хочу обновить первую запись данными из последующих записей, где эта последующая запись содержит дополнительные данные, которые делает предыдущая записьнет.
Я смотрел на стороннее программное обеспечение, такое как Fuzzy Dups , но я хотел бы использовать опцию чистого MySQL, если это возможно
Конечная цель заключается в том, чтобыу меня осталось что-то вроде:
+---------+---------+--------------+----------------------+-------------+
| id | Name | Address | Phone | Email | LastVisited |
+---------+---------+--------------+---------+------------+-------------+
| 1 | bob | 12 Some Road | 02456 | bob@domain | 2010-07-13 |
+---------+---------+--------------+---------+------------+-------------+
Должен ли я смотреть на циклы в хранимой процедуре / функции или есть какая-то очень простая вещь, которую я пропустил?