Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 테이블에서 중복 레코드 삭제하는 방법 (DELETE 명령 활용법)

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 인덱스를 추가하여 애초에 중복 데이터가 입력되지 않도록 설계하는 것이 좋습니다.