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

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

Patricia Arquette
Patricia Arquette원래의
2024-12-26 11:33:10506검색

How to Delete Duplicate Records in MySQL Without Using Temporary Tables?

임시 테이블 없이 MySQL 테이블에서 중복 레코드 삭제

MySQL 데이터베이스에서 데이터 무결성을 유지하는 것이 중요하며, 중복 레코드를 제거하는 것이 종종 필요한 작업. 이 문제에 대한 많은 솔루션이 있지만 일부는 리소스 집약적일 수 있는 임시 테이블 사용과 관련될 수 있습니다. 이 문서에서는 임시 테이블을 사용하지 않고 중복 레코드를 삭제하는 대체 방법을 제시합니다.

고유 인덱스 사용

테이블에 기본 키 열이 없으면 레코드를 고유하게 식별하는 열의 고유 인덱스입니다. 이 경우 member_id, Quiz_num, Question_num, Answer_num 컬럼이 고유 인덱스를 구성해야 합니다. 이 인덱스를 추가하면 데이터베이스가 자동으로 고유성을 강화하여 향후 중복 레코드가 삽입되는 것을 방지합니다.

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

기본 키 및 하위 쿼리 사용

또는 테이블에 기본 키를 추가하고 하위 쿼리를 사용하여 중복 레코드를 식별하고 삭제할 수 있습니다. 기본 키를 추가하려면 다음 쿼리를 실행하세요.

ALTER TABLE `TableA`
ADD PRIMARY KEY (`id`);

기본 키가 설정되면 다음 쿼리를 사용하여 중복 레코드를 삭제할 수 있습니다.

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
);

이 쿼리 먼저 하위 쿼리를 사용하여 중복 레코드를 식별한 다음 테이블에서 제거합니다. id 열은 각 중복 세트에 대해 하나 이상의 레코드가 유지되도록 하는 데 사용됩니다.

적절한 방법 선택

두 방법 모두 임시 테이블 없이 중복 레코드를 효과적으로 제거합니다. . 이들 사이의 선택은 특정 요구 사항과 테이블 구조에 따라 다릅니다. 향후 중복 레코드 삽입이 우려되는 경우 고유 색인을 생성하는 것이 좋습니다. 그렇지 않으면 기본 키와 하위 쿼리를 사용하는 것이 일회성 중복 제거를 위한 효율적인 솔루션이 될 수 있습니다.

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

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