기술블로그

📌 MySQL 테이블에서 중복된 데이터를 효과적으로 삭제하는 방법

Chansman 2025. 3. 25. 14:45

📌 개념 정리

이번 포스팅에서는 MySQL 테이블에서 중복된 데이터를 효과적으로 삭제하는 방법을 소개합니다. 특히, 책 제목(title)과 같은 특정 필드의 값이 중복되는 경우에 유용하게 사용할 수 있는 쿼리입니다.


🚦 중복 데이터 삭제 방법

MySQL 테이블에서 중복된 값이 있을 때, 특정 조건을 사용하여 중복된 레코드만 제거하는 방법입니다.

🎯 쿼리 예시

책 제목(title)이 중복되는 경우, 가장 최근의 ID(bookID)가 높은 레코드를 삭제하고 최초의 데이터만 유지하는 쿼리입니다.

DELETE b1
FROM books b1
JOIN books b2
  ON b1.title = b2.title
 AND b1.bookID > b2.bookID;

🚨 쿼리 작동 원리

  • 같은 테이블을 두 번 조인(self-join)하여 같은 제목의 다른 레코드를 찾아냅니다.
  • 조건 b1.bookID > b2.bookID를 통해 중복된 데이터 중 가장 최근 데이터(ID가 높은 것)를 삭제합니다.
  • 결과적으로 동일한 제목의 첫 번째 레코드만 유지됩니다.

🧪 실전 사용 예시

이 방법은 데이터 정제를 위해 매우 유용하며, 예를 들어 도서 목록, 회원 목록, 상품 목록 등에서 중복 데이터를 정리할 때 사용할 수 있습니다.


🧠 고급 팁 & 주의사항

  • 삭제 전 항상 백업하거나 트랜잭션을 활용하세요.
  • 삭제할 데이터를 사전 확인하기 위해 SELECT로 먼저 테스트하는 것을 추천합니다.
-- 삭제 전 테스트 조회
SELECT b1.*
FROM books b1
JOIN books b2
  ON b1.title = b2.title
 AND b1.bookID > b2.bookID;

마무리 요약 및 복습 포인트

  • 중복된 데이터를 삭제할 때 자기 자신과 JOIN하여 조건을 지정할 수 있습니다.
  • 항상 중요한 작업 전 테스트를 진행하여 안전하게 처리하세요.

이 쿼리를 활용하여 중복 데이터를 효과적으로 관리해 보세요!