본문 바로가기
프로그램개발/DB(MySQL,MariaDB,MongoDB)

MySQL 중복제거 쿼리

by 크레도스 2015. 6. 17.

참조 : http://gyuha.tistory.com/309

위 블로그에서 알려주시는 쿼리를 적용하였다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 중복 레코드 조회 */
SELECT 테이블_index, 
       중복필드, 
       count(*) as cnt 
  FROM 테이블  
   GROUP BY 중복필드  
HAVING count(테이블_index)>1; 
 
/* 중복 레코드 삭제 */
DELETE 
  FROM 테이블  
 WHERE 테이블_index not in (
     SELECT 테이블_index FROM (
           SELECT 테이블_index FROM 테이블 GROUP BY 중복필드
     as b
 );
 
  

하나의 테이블에 특정 레코드가 중복되어 있을 때 중복 레코드를 삭제하도록 하여야 한다.
테이블에 index로 primary key가 있으면 더욱 확실하게 삭제될 것이다.

테이블          : 테이블
테이블_index : primary key 필드
중복필드       : 테이블에 중복되는 필드 


※ 백업을 하신 후 진행하세요. 기존 데이터를 작업하기전에 백업을 하신 후 하시거나 테이블를 카피하여 테스트 한 후 진행하시기 바랍니다.