>데이터 베이스 >MySQL 튜토리얼 >임시 테이블을 사용하지 않고 MySQL 테이블에서 중복 레코드를 효율적으로 제거하는 방법은 무엇입니까?

임시 테이블을 사용하지 않고 MySQL 테이블에서 중복 레코드를 효율적으로 제거하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-31 12:48:11926검색

How to Remove Duplicate Records from a MySQL Table Efficiently Without Using Temporary Tables?

임시 테이블 없이 MySQL 테이블에서 중복 레코드를 삭제하는 방법

데이터 무결성 측면에서 중복 레코드를 처리하는 것은 매우 어려울 수 있습니다. 난처한 작업. 실수로 이중 제출로 인해 TableA 테이블에 동일한 항목이 여러 개 포함된 시나리오를 생각해 보세요. 하나 이상의 고유 행을 유지하면서 이러한 중복 항목을 제거해야 할 때 문제가 발생합니다.

고유 인덱스 접근 방식:

한 가지 효과적인 방법은 고유 인덱스를 추가하는 것입니다. 관련 열:

ALTER IGNORE TABLE `TableA`
ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);

이 인덱스는 지정된 열에 고유성을 적용하여 중복 조합이 없도록 보장합니다. 존재할 수 있습니다. 결과적으로 동일한 레코드를 삽입하려는 시도는 데이터베이스에서 거부됩니다.

기본 키 접근 방식:

또는 테이블에 기본 키를 도입할 수도 있습니다. 기본 키는 각 행을 구별하는 고유 식별자입니다. 이를 기존 테이블 구조에 추가하면 이후에 다음을 실행할 수 있습니다.

DELETE FROM member
WHERE id IN (SELECT *
             FROM (SELECT id FROM member
                   GROUP BY member_id, quiz_num, question_num, answer_num HAVING (COUNT(*) > 1)
                  ) AS A
            );

이 쿼리는 그룹 개수를 비교하고 개수가 1보다 큰 행을 대상으로 지정하여 중복 행을 식별하고 제거합니다. id 열은 다음을 나타낼 수 있습니다. 기존 기본 키 또는 이 목적으로만 추가된 새 키입니다.

두 접근 방식 모두 MySQL 테이블의 중복 레코드 문제에 대한 효율적인 솔루션을 제공하므로 별도의 작업 없이도 데이터 무결성을 유지할 수 있습니다. 임시 테이블.

위 내용은 임시 테이블을 사용하지 않고 MySQL 테이블에서 중복 레코드를 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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