2010-03-04 5 views
0

우리 데이터베이스 (MySQL)에 id, title 및 discription이있는 테이블이 있습니다.MySQL : 데이터를 다양하게 만드는 방법은 무엇입니까?

다른 사이트에서 가져온 데이터의 상당 부분은 고유 한 ID이지만 동일한 제목과 디스크가 있습니다. 우리는 데이터베이스에 비슷한 (동일한) 데이터를 가지고있는 것과 동일한 제목과 디스크를 가진 데이터를 선택하는 것을 원하지 않습니다.

어떻게 동일한 데이터를 쉽게 삭제할 수 있습니까? (그러나 ID는 고유합니다.)

답변

0

데이터베이스의 크기에 따라 Levenshtein 거리를 계산할 수 있고 soundex을 사용할 수 있습니다.

0

입니다 수 있습니다. 권리?

제목이 같고 설명이 다른 행을 찾고 다른 행과 동일한 설명이있는 행을 하나만 찾고 다른 행은 삭제하고 싶습니다.

테이블 이름이 table1이고 ID 열이 숫자라고 가정합니다.

DELETE t 
FROM table1 t 
JOIN ( 
    SELECT title, description, MIN(ID) AS idNotToDelete 
    FROM table1 
    GROUP BY title, description 
    HAVING COUNT(*) > 1 
) t1 
    ON t.title = t1.title AND t.description = t1.description AND t1.idNotToDelete <> t.id 

위의 쿼리는 두 개 이상의 발생이있는 모든 행을 찾고 발생 당 최소 ID를 표시합니다. 그런 다음 최소 ID가 아닌 동일한 제목 및 설명이있는 모든 중복 행을 삭제합니다. 그래서

ID 타이틀 정보
1 myTitle이라는 인 mydescription
2 myTitle이라는 인 mydescription
3 myTitle2 myDescription2
4 myTitle2 myDescription2
5 myTitle이라는 인 mydescription

해질 것이다

ID 타이틀 정보
1 myTitle myDescription
3 myTitle2 myDescription2

관련 문제