MySQL: 가장 최근 기록을 유지하면서 중복 기록 삭제
질문: 고유 ID 필드를 기반으로 가장 최근 테이블을 유지하면서 MySQL 테이블을 생성하시겠습니까?
해결책:
이를 달성하려면 다음 단계를 따르세요.
중복 이메일 식별:
검색어를 사용하여 모든 중복 이메일 주소 목록 검색:
SELECT email FROM test GROUP BY email HAVING COUNT(*) > 1;
각 중복 이메일의 최신 ID 찾기:
쿼리를 사용하여 각 중복 이메일과 연결된 최신 ID를 확인하세요.
SELECT MAX(id) AS lastID, email FROM test WHERE email IN ( SELECT email FROM test GROUP BY email HAVING COUNT(*) > 1 ) GROUP BY email;
가장 오래된 중복 항목 삭제:
DELETE 작업을 수행하여 중복 항목 제거 최신 ID보다 작은 ID를 가진 이메일:
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;
최적 버전:
다음 최적화 버전 잠재적으로 성능을 향상시키면서 동일한 결과를 제공합니다.
DELETE test FROM test INNER JOIN ( SELECT MAX(id) AS lastID, email FROM test GROUP BY email HAVING COUNT(*) > 1) duplic ON duplic.email = test.email WHERE test.id < duplic.lastID;
이 수정된 DELETE 문은 가장 오래된 중복 항목을 제거하는 데 중점을 둡니다.
추가 옵션:
또는 Rene Limon이 제공한 다음 쿼리를 활용할 수 있습니다.
DELETE FROM test WHERE id NOT IN ( SELECT MAX(id) FROM test GROUP BY email);
이 접근 방식은 최대 ID를 기준으로 가장 최근의 중복 이메일 주소를 유지합니다.
위 내용은 가장 최근 기록을 유지하면서 MySQL에서 중복된 이메일 주소를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!