[sql] 중복 데이터가 너무 많은 테이블 삭제 방법

데이터베이스 테이블에서 중복된 데이터가 많은 경우, 중복 데이터를 삭제하는 작업이 필요할 수 있습니다. 이때 아래의 방법을 사용하여 중복 데이터를 효율적으로 삭제할 수 있습니다.

1. 임시 테이블을 생성하여 중복 데이터 찾기

중복 데이터를 삭제하기 전에, 어떤 데이터가 중복되었는지 파악해야 합니다. 이를 위해 임시 테이블을 생성하고 중복된 데이터를 찾는 SQL 쿼리를 작성합니다.

CREATE TABLE temp_table AS SELECT column1, column2, ...
FROM original_table
GROUP BY column1, column2, ...
HAVING COUNT(*) > 1;

위 쿼리에서 column1, column2, … 는 중복 여부를 확인할 열들을 나타냅니다. 원본 테이블에 있는 모든 열을 선택할 수도 있습니다.

2. 중복 데이터 삭제하기

중복 데이터를 찾았다면, 이제 이를 삭제할 차례입니다. 삭제하기 전에는 데이터의 백업을 해두는 것이 좋습니다.

DELETE FROM original_table
WHERE (column1, column2, ...) IN (
    SELECT column1, column2, ...
    FROM temp_table
);

위 쿼리에서 column1, column2, … 는 중복된 데이터를 찾을 때와 동일한 열들을 나타냅니다.

3. 임시 테이블 삭제하기

중복 데이터를 삭제한 후에는 임시 테이블도 삭제해야 합니다.

DROP TABLE temp_table;

위 쿼리를 실행하여 임시 테이블을 삭제할 수 있습니다.

참고 자료

[1] Delete Duplicate Rows in SQL Server Example [2] Removing Duplicate Rows in MySQL