MySQL 테이블에서 중복 레코드를 제거하려면 DELETE 명령을 사용하면 됩니다. 이 글에서는 예제 테이블을 직접 만들고, 중복 데이터를 삽입한 뒤, DELETE 문으로 중복 레코드를 삭제하는 전체 과정을 단계별로 살펴보겠습니다.
1단계: 테이블 생성하기
먼저 'DuplicateDeleteDemo'라는 이름의 테이블을 생성합니다.
mysql> create table DuplicateDeleteDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.60 sec)
2단계: 레코드 삽입하기
테이블에 레코드를 삽입합니다. 여기서는 'John'이라는 동일한 레코드를 3번 추가하여 의도적으로 중복 데이터를 만들었습니다.
mysql> insert into DuplicateDeleteDemo values(1,'John'); Query OK, 1 row affected (0.11 sec) mysql> insert into DuplicateDeleteDemo values(1,'John'); Query OK, 1 row affected (0.14 sec) mysql> insert into DuplicateDeleteDemo values(2,'Johnson'); Query OK, 1 row affected (0.13 sec) mysql> insert into DuplicateDeleteDemo values(1,'John'); Query OK, 1 row affected (0.14 sec)
3단계: 저장된 레코드 확인하기
테이블의 모든 레코드를 조회하려면 SELECT 문을 사용합니다.
mysql> select *from DuplicateDeleteDemo;
아래 출력 결과에서 중복 레코드가 함께 조회되는 것을 확인할 수 있습니다.
+------+---------+ | id | name | +------+---------+ | 1 | John | | 1 | John | | 2 | Johnson | | 1 | John | +------+---------+ 4 rows in set (0.00 sec)
위 결과를 보면 테이블에는 총 4개의 레코드가 있으며, 그중 3개는 서로 중복된 레코드입니다.
4단계: DELETE 명령으로 중복 레코드 삭제하기
중복 레코드를 삭제하려면 DELETE 명령에 조건을 지정하여 실행합니다.
mysql> delete from DuplicateDeleteDemo where id=1; Query OK, 3 rows affected (0.19 sec)
5단계: 삭제 결과 확인하기
레코드가 정상적으로 삭제되었는지 확인하기 위해 다시 한번 전체 레코드를 조회해 보겠습니다.
mysql> select *from DuplicateDeleteDemo;
다음 출력 결과를 통해 모든 중복 레코드가 삭제되었음을 확인할 수 있습니다.
+------+---------+ | id | name | +------+---------+ | 2 | Johnson | +------+---------+ 1 row in set (0.00 sec)
실무 활용 팁
위 예제에서는 WHERE 조건을 사용해 특정 레코드를 통째로 삭제했습니다. 하지만 실무에서는 중복 데이터 중 하나만 남기고 나머지만 삭제해야 하는 경우가 더 많습니다. 이런 상황에서는 GROUP BY 절과 MIN(), MAX() 같은 집계 함수를 활용해 대표 레코드 하나를 남기는 방식으로 처리할 수 있으며, 근본적인 해결책으로는 테이블에 UNIQUE 인덱스를 추가하여 애초에 중복 데이터가 입력되지 않도록 설계하는 것이 좋습니다.