📌 개념 정리
이번 포스팅에서는 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하여 조건을 지정할 수 있습니다.
- 항상 중요한 작업 전 테스트를 진행하여 안전하게 처리하세요.
이 쿼리를 활용하여 중복 데이터를 효과적으로 관리해 보세요!
'기술블로그' 카테고리의 다른 글
📌 Select *와 Select 컬럼 지정의 차이점: 성능 최적화와 효율적인 쿼리 작성 (0) | 2025.03.25 |
---|---|
📌 My Sql에서 부분 일치 검색으로 중복 데이터 제거하기 (0) | 2025.03.25 |
📌 MySQL 데이터베이스 정리 (with 크롤링 in Selenium, PymySQL) (0) | 2025.03.25 |
📌 크롤링 시 IndexError 예외처리 방법 (초기값은 있었지만 없을경우) (0) | 2025.03.25 |
🐍 Python + PyMySQL로 MySQL 리팩토링(2/2) (0) | 2025.03.21 |