>  기사  >  데이터 베이스  >  오류 없이 MySQL에서 중복 행을 삭제하려면 어떻게 해야 합니까?

오류 없이 MySQL에서 중복 행을 삭제하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-04 03:02:29860검색

How Can I Delete Duplicate Rows in MySQL Without Receiving an Error?

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

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