서론
테이블에 UNIQUE 제약 조건이 없거나, 모종의 이유(?)로 중복 값이 들어있는 경우가 있다.
아래의 쿼리를 사용하면 pk가 가장 작은 값은 살아남고, 나중에 들어온 중복 값들을 찾아 삭제한다.
이 쿼리를 실행하기 전, 반드시 백업을 해놓고 실행하는 것을 권장한다.
중복 제거 쿼리
DELETE a
FROM [테이블 이름] a, [테이블 이름] b
WHERE a.[pk 컬럼] > b.[pk 컬럼]
AND a.[중복 값이 들어있는 컬럼] = b.[중복 값이 들어있는 컬럼];
주의 사항
- `테이블 이름`은 2개를 작성하지만, 테이블 이름은 똑같아야 한다.
- 마찬가지로 `pk 컬럼`도 똑같은 이름을 작성해야하며, `중복 값이 들어있는 컬럼`도 마찬가지다.
사용 예시
DELETE a
FROM test_db.user a, test_db.user b
WHERE a.user_id > b.user_id
AND a.user_email = b.user_email;
'Database > MySQL' 카테고리의 다른 글
[스터디] Real MySQL 8.0 1권 - 5장 트랜잭션과 잠금 정리 (0) | 2024.09.23 |
---|---|
[MySQL] INSERT 할 때, 마지막 PK 값에서 1씩 증가시키는 방법 (0) | 2023.04.27 |
[MySQL] AUTO_INCREMENT 초기화하는 방법 (0) | 2023.04.27 |
[MySQL] 프로세스 확인과 프로세스 죽이기 (2) | 2022.09.30 |
[MySQL] 계정 조회, 계정 생성, 계정 삭제, 권한 조회, 권한 부여, 권한 삭제 (0) | 2022.09.30 |