집 >데이터 베이스 >MySQL 튜토리얼 >각 이메일의 최신 항목을 유지하면서 MySQL에서 중복 레코드를 어떻게 삭제할 수 있습니까?
최신 ID 보존으로 MySQL에서 중복 레코드를 효과적으로 삭제
문제:
In 고유 ID와 이메일 필드가 모두 포함된 MySQL 테이블의 경우 중복된 이메일 주소가 발생합니다. 작업은 고유 ID를 유지하면서 각 중복 이메일의 최신(가장 최근에 삽입된) 인스턴스를 제외한 모든 인스턴스를 제거하는 것입니다.
해결책:
문제는 해결될 수 있습니다. 중복 이메일을 식별하고 제거하는 2단계 프로세스를 통해
1단계: 중복 이메일 식별 이메일
select email from test group by email having count(*) > 1;
이 쿼리는 테이블에 두 번 이상 나타나는 모든 이메일 목록을 반환합니다.
2단계: 중복 기록 분리 및 삭제
delete test from test inner join ( select max(id) as lastId, email from test where email in ( select email from test group by email having count(*) > 1 ) group by email ) duplic on duplic.email = test.email where test.id < duplic.lastId;
이 쿼리는 기본 테이블(테스트)과 각 중복 이메일의 최신 ID를 포함하는 하위 쿼리(중복)입니다. 그런 다음 최신 ID보다 작은 ID를 가진 모든 중복 기록을 삭제하여 각 이메일의 가장 최근에 삽입된 인스턴스만 효과적으로 보존합니다.
대체 솔루션:
더 간결한 효율적인 솔루션은 다음과 같습니다.
delete from test where id not in ( select max(id) from test group by email );
이 쿼리는 최신 인스턴스가 아닌 모든 레코드를 식별하고 삭제합니다. 이메일이 중복되었습니다.
위 내용은 각 이메일의 최신 항목을 유지하면서 MySQL에서 중복 레코드를 어떻게 삭제할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!