2011-04-22 6 views
1

내 문제는 내 테이블에 중복 항목이 있다는 것입니다. 그러나 그렇게 간단하지는 않습니다. 일부는 유효한 중복이고 다른 것은 유효하지 않습니다. 예를 들어 E Pearl River, NYEast Pearl River, NY은 같은 도시이며 Bardonia, NYNanuet, NY은 그렇지 않습니다. 따라서 모든 중복 항목을 제거하면 Bardonia와 같은 유효한 도시가 제거됩니다.MySQL에서 특정 중복 항목의 첫 번째 행을 제거하십시오.

내 질문은, 누구든지 다음 각 행을 통해 (SQL 또는 모든 프로그래밍 언어) 방법 루프에 알고하지 않습니다 행이있을 경우

  • 확인을 복제하는 경우

    • 확인
    • 가 중복 행의 를 제거 city (예 : E 주강, NY주강, NY)에 대한 부분 일치
    • city에 대해 부분 일치가 인 경우 (즉,) Bardonia, NY 및 Nanuet, NY)가 함께 이동합니다.

    +—————————+——————————————————————+ 
    | zipcode |  city   | 
    +—————————+——————————————————————+ 
    | 10956 | East Pearl River, NY | 
    | 10977 | Spring Valley, NY | 
    | 10954 | Bardonia, NY   | 
    | 10954 | Nanuet, NY   | 
    +—————————+——————————————————————+ 
    

    +—————————+——————————————————————+ 
    | zipcode |  city   | 
    +—————————+——————————————————————+ 
    | 10956 | E Pearl River, NY | 
    | 10956 | East Pearl River, NY | 
    | 10977 | Spring Valley, NY | 
    | 10954 | Bardonia, NY   | 
    | 10954 | Nanuet, NY   | 
    +—————————+——————————————————————+ 
    

    전에 어떤 도움이 크게 감사합니다!

  • 답변

    0

    자연어 처리가 포함되어있어 문제를 해결하기위한 쉬운 방법은 없습니다.

    어떻게 정의합니까 E 주강, NY동 진주 강, NY에 대한 중복입니까? 동서 진주천은 어때? 자연 언어 처리를 위해서는 Lucene 또는 MySQL Full-Text Search을 살펴 봐야합니다.

    매우 간단하지만 (반드시 정확하지는 않지만) 솔루션의 경우 간단한 Levenshtein distance 측정을 시도해 볼 수 있습니다.

    +0

    이것은 문제 일 수 있습니다 - 이것들을 살펴 보겠습니다. 감사합니다. – stewart715

    관련 문제