이전 DBA는 2.4M 항목이있는 비 관계형 테이블을 관리하며 모두 고유 ID를 사용합니다. 그러나, 예를 들어, 각 레코드에 서로 다른 데이터와 중복 된 기록이 있습니다MySQL 다중 중복 레코드 병합
+---------+---------+--------------+----------------------+-------------+
| id | Name | Address | Phone | Email | LastVisited |
+---------+---------+--------------+---------+------------+-------------+
| 1 | bob | 12 Some Road | 02456 | | |
| 2 | bobby | | 02456 | [email protected] | |
| 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,000 개의 엔트리가 있습니다.
이러한 레코드를 병합하는 가장 효율적인 방법은 무엇이며 삭제가 필요없는 레코드에 플래그를 지정하면 어떻게됩니까?
INNER JOIN의 UPDATE를 사용하여 보았습니다.하지만 후속 레코드의 데이터로 첫 번째 레코드를 업데이트하려는 경우 WHERE 절이 필요합니다. 이전 레코드에는 추가 레코드가없는 추가 데이터가 있습니다.
나는 그런 Fuzzy Dups 같은 타사 소프트웨어 검토 한 결과,하지만 수는
최종 목표는 다음 내가 좋아하는 뭔가 남아있을 거라고 경우 나는 순수 MySQL의 옵션을 싶습니다
+---------+---------+--------------+----------------------+-------------+
| id | Name | Address | Phone | Email | LastVisited |
+---------+---------+--------------+---------+------------+-------------+
| 1 | bob | 12 Some Road | 02456 | [email protected] | 2010-07-13 |
+---------+---------+--------------+---------+------------+-------------+
스토어드 프로 시저/함수에서 루핑을해야합니까? 아니면 내가 놓친 실제적인 것이 있습니까?
U는 프로 시저를 작성해야합니다 ...하지만 내가 원하는 u가 원하는 것이 무엇인지 더 알고 싶습니다. 유선 전화에 따라 그룹화하고 싶지만 그 그룹에 다른 이름이나 주소 등이 있으면 어떤 값을 사용합니까? –
안정적인 지점이 있어야 할 것 같습니다. 첫 번째 레코드가 올바른 레코드 여야한다고 말하면됩니다. 이것은 모든 기록에 대한 경우는 아니지만 위험을 기꺼이 감수합니다! – Rucia