>  기사  >  데이터 베이스  >  대상 테이블이 FROM 절에 있을 때 MySQL 테이블에서 중복 행을 삭제하는 방법은 무엇입니까?

대상 테이블이 FROM 절에 있을 때 MySQL 테이블에서 중복 행을 삭제하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-01 11:15:30288검색

How to Delete Duplicate Rows in a MySQL Table When the Target Table is in the FROM Clause?

MySQL 테이블에서 중복 행 삭제

중복 레코드가 포함된 테이블을 처리할 때 데이터 유지를 위해 중복 행을 제거해야 합니다. 무결성과 효율성. MySQL에서 이를 달성하려면 특정 쿼리를 통해 수행할 수 있는 프로세스인 중복 행을 식별하고 삭제하는 작업이 포함됩니다.

귀하의 경우 이미 다음 쿼리를 사용하여 empssn 필드를 기반으로 중복 레코드를 결정했습니다.

SELECT COUNT(empssn), empssn FROM employee 
GROUP BY empssn 
HAVING COUNT(empssn) > 1

중복 레코드를 삭제하기 위해 다음 쿼리를 시도했습니다.

DELETE FROM employee 
WHERE (empid, empssn) NOT IN (
    SELECT MIN(empid), empssn FROM employee 
    GROUP BY empssn
);

그러나 MySQL에서는 FROM 절에 대상 테이블을 지정하는 것을 허용하지 않기 때문에 오류가 발생했습니다. 업데이트 쿼리.

이 문제를 해결하기 위한 한 가지 접근 방식은 파생 테이블에 하위 쿼리를 래핑하는 것입니다.

DELETE FROM employee 
WHERE (empid, empssn) NOT IN (
    SELECT empid, empssn FROM (
        SELECT MIN(empid) AS empid, empssn FROM employee 
        GROUP BY empssn
    ) X
);

이 수정된 쿼리를 사용하면 임시 파생 테이블을 효과적으로 생성할 수 있습니다. (X) 직원 테이블의 필수 데이터가 포함되어 있습니다. 그런 다음 기본 DELETE 쿼리는 이 파생 테이블을 참조하여 empid와 empssn의 고유한 조합을 기반으로 중복 행을 삭제할 수 있습니다. 이 접근 방식을 사용하면 발생한 오류를 해결하고 중복 기록을 성공적으로 삭제할 수 있습니다.

위 내용은 대상 테이블이 FROM 절에 있을 때 MySQL 테이블에서 중복 행을 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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