집 >데이터 베이스 >MySQL 튜토리얼 >하나의 레코드를 유지하면서 MySQL에서 중복 행을 효율적으로 삭제하려면 어떻게 해야 합니까?
MySQL 중복 행 제거 가이드: 고유 레코드를 효율적으로 유지
이 문서에서는 MySQL 테이블에서 중복 데이터를 제거하고 각 중복 데이터 세트에서 하나의 레코드를 유지하는 방법을 설명합니다. SELECT DISTINCT
를 사용하여 고유한 값을 필터링하는 것이 가능하지만 이 기사에서는 DELETE
명령을 사용하여 이를 달성하는 방법에 중점을 둡니다.
중요 팁:
우발적인 데이터 손실을 방지하려면 삭제 작업을 수행하기 전에 테이블을 백업하세요.
가장 작은 ID로 기록 유지:
중복 항목 중 ID가 가장 작은 행을 유지하려면 다음 SQL 문을 실행하세요.
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name;</code>
가장 큰 ID로 기록 유지:
중복 항목 중 ID가 가장 큰 행을 유지하려면 다음 SQL 문을 실행하세요.
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name;</code>
기타 참고사항:
효율성 경고:
위 방법은 효율적이지 않으며 데이터베이스 연결 과부하가 발생할 수 있습니다.
무결성 요구 사항:
AND n1.id < n2.id
(또는 AND n1.id > n2.id
) 절을 포함해야 합니다. 이 조건을 무시하면 테이블의 모든 행이 삭제될 수 있습니다.
대안:
더 나은 성능을 위해 다음 INSERT
및 DISTINCT
쿼리 사용을 고려해 보세요.
<code class="language-sql">INSERT INTO tempTableName (cellId, attributeId, entityRowId, value) SELECT DISTINCT cellId, attributeId, entityRowId, value FROM tableName;</code>
그런 다음 원본 테이블을 삭제하고 임시 테이블의 이름을 바꿀 수 있습니다. 이 방법을 사용하면 데이터가 직접 삭제되는 것을 방지하여 효율성과 보안이 향상됩니다.
위 내용은 하나의 레코드를 유지하면서 MySQL에서 중복 행을 효율적으로 삭제하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!