>데이터 베이스 >MySQL 튜토리얼 >가장 최근 기록을 유지하면서 MySQL에서 중복된 이메일 주소를 제거하는 방법은 무엇입니까?

가장 최근 기록을 유지하면서 MySQL에서 중복된 이메일 주소를 제거하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-15 21:51:02672검색

How to Remove Duplicate Email Addresses in MySQL While Keeping the Most Recent Record?

MySQL: 가장 최근 기록을 유지하면서 중복 기록 삭제

질문: 고유 ID 필드를 기반으로 가장 최근 테이블을 유지하면서 MySQL 테이블을 생성하시겠습니까?

해결책:

이를 달성하려면 다음 단계를 따르세요.

  1. 중복 이메일 식별:

    • 검색어를 사용하여 모든 중복 이메일 주소 목록 검색:

      SELECT email
      FROM test
      GROUP BY email
      HAVING COUNT(*) > 1;
  2. 각 중복 이메일의 최신 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;
  3. 가장 오래된 중복 항목 삭제:

    • 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.