MySQL에서 중복 행 삭제: 독특한 테이블 트릭
데이터베이스에서 중복 레코드를 처리하는 것은 일반적인 문제가 될 수 있습니다. MySQL에서는 일련의 단계를 통해 이러한 중복 항목을 삭제할 수 있습니다. 특정 시나리오를 살펴보고 그 과정에서 잠재적인 위험을 해결해 보겠습니다.
'empid', 'empname' 및 'empssn' 필드가 있는 "employee"라는 테이블이 있다고 가정합니다. 중복 레코드를 식별하기 위해 쿼리를 실행하여 각 'empssn'의 발생 횟수를 계산합니다.
<code class="sql">SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1</code>
이 쿼리는 어떤 'empssn'이 두 번 이상 나타나는지 나타내는 행을 반환합니다.
다음으로, 다음 쿼리를 사용하여 중복 레코드를 삭제하려고 합니다.
<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT MIN(empid), empssn FROM employee GROUP BY empssn);</code>
안타깝게도 이 쿼리에서는 오류가 발생할 수 있습니다. "FROM 절에서 업데이트할 대상 테이블 'employee'를 지정할 수 없습니다."
이 오류를 방지하려면 파생 테이블 내에서 내부 쿼리를 래핑하는 기술을 사용할 수 있습니다.
<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT empid, empssn FROM (SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn) X);</code>
이 파생 테이블은 DELETE 문과 FROM 모두에서 대상 테이블 'employee'를 참조할 수 있도록 효과적으로 임시 테이블 역할을 합니다.
이 트릭을 구현하면 'employee' 테이블에서 중복 레코드를 성공적으로 삭제할 수 있습니다. 이 솔루션은 기술적 장애물을 해결할 뿐만 아니라 MySQL의 데이터베이스 조작에 대한 더 깊은 이해를 제공합니다.
위 내용은 오류 없이 MySQL에서 중복 행을 삭제하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!