메뉴 건너뛰기

개발도구


예를 들어, 아래와 같이 중복된 레코드가 잔뜩 있다고 가정합니다.


mysql> SELECT * FROM my_dup_table;

idNo field1 field2 field3
1  abcd  abcde  abcd
2  abcd  abcde  abcd <--중복
3  ttt  ttt  ttt
4  ttt  tta  ttt
5  abcd abcde atd
6  abcde abcde abcd
7  ttt  tta  ttt  <--중복
8  ttt  ttt  ttt  <--중복

물론, idNo 같은 인덱스 필드의 레코드 값들은 각자 고유하다는 가정도 포함 합니다.


즉, field1, field2, field3 필드들의 레코드 값들이 상기 내용과 같이 레코드 간에 중복이 있을수 있으며, 아래와 같이 중복된 레코드들을 제거하고 싶다고 가정합니다.

idNo field1 field2 field3
1  abcd  abcde  abcd
3  ttt  ttt  ttt
4  ttt  tta  ttt
5  abcd abcde atd
6  abcde abcde abcd

MySQL 쿼리는 아래와 같습니다.

delete from [테이블] where [인덱스필드] NOT IN (SELECT * from (SELECT MIN([인덱스필드]) FROM [테이블] GROUP BY [중복필드1],[중복필드2], [중복필드3], ... ) AS tempTable);


예를 들면 아래와 같습니다.

delete from my_dup_table where idNo NOT IN (SELECT * from (SELECT MIN(idNo) FROM my_dup_table GROUP BY field1,field2, field3) AS tempTable);

건투를 빕니다!





위로