홈 › SQL 실무 › 05 / 9

중복 데이터 찾기와 정리

탐지, 한 건만 남기고 삭제, 재발 방지
섹션 6진행 0 / 9

중복 데이터 찾기와 정리: 탐지, 한 건만 남기고 삭제, 재발 방지

같은 회원이 두 번 가입하고, 전화번호는 하이픈 유무만 다르고, 이메일은 대소문자와 공백만 다릅니다. 중복은 먼저 GROUP BY 와 윈도 함수로 찾고, 백업을 만든 뒤 한 건만 남기고 지우고, 마지막에 UNIQUE 제약으로 다시 못 들어오게 막습니다. NULL 이 끼면 결과가 달라지는 지점도 함께 다룹니다.

1. 왜 배우는가

회원, 주문, 로그 적재 테이블에는 어느 날 같은 행이 두 개씩 들어 있습니다. 화면에서 더블 클릭으로 저장이 두 번 되거나, 배치가 실패 후 재실행되거나, 여러 시스템에서 데이터를 합치면서 생깁니다. 중복이 쌓이면 통계가 부풀고, 같은 고객에게 안내 메일이 두 번 나가고, 나중에 UNIQUE 제약을 걸려는 순간 오류가 납니다.

정리는 세 단계입니다. 먼저 어떤 값을 같다고 볼지(키) 정하고 중복을 찾습니다. 다음으로 백업을 만들고 어느 행을 남길지 정해 나머지를 지웁니다. 마지막으로 제약을 걸어 재발을 막습니다. 삭제는 되돌리기 어려워서 탐지 쿼리와 삭제 쿼리를 같은 조건으로 쓰는 것이 핵심입니다.

이 레슨은 중급 02 EXISTS·IN 과 NULL 함정, 중급 08 제약 조건, 고급 01 순위 함수, 고급 10 조인 DELETE 를 알면 이해가 쉽습니다. 이 레슨의 예제는 모두 가상의 회원 데이터입니다.