SQLite 데이터베이스에서 중복 행 식별 및 제거
SQLite 데이터베이스에서는 여러 항목이 동일한 데이터를 공유하는 중복 행이 자주 발생합니다. 고유한 행을 유지하는 것이 중요한 상황에서는 중복 항목을 제거하는 것이 필수적입니다. 이 문서에서는 기본 키 열에 의존하지 않고 대규모 SQLite 테이블에서 중복 행을 삭제하는 효율적인 방법을 살펴봅니다.
'hash'와 'd'라는 두 개의 열이 있는 다음 테이블을 생각해 보세요. 이 테이블의 일부 행에는 일치하는 'hash' 및 'd' 값이 모두 있습니다. 그러나 동일한 'd' 값이 반드시 일치하는 '해시' 값을 나타내는 것은 아닙니다. 이 문제를 해결하기 위해 우리는 각 중복 행의 인스턴스 하나만 유지하고 나머지는 삭제하는 것을 목표로 합니다.
기본 키가 없는 경우 행을 구별하기 위해 SQLite는 'rowid' 의사 열을 제공합니다. 각 행은 고유한 'rowid' 값을 갖고 있어 이를 구별할 수 있습니다. 다음 쿼리는 'hash'와 'd'의 고유한 조합당 가장 낮은 'rowid'를 유지하여 중복 행을 효과적으로 삭제합니다.
DELETE FROM YourTable WHERE rowid NOT IN ( SELECT MIN(rowid) FROM YourTable GROUP BY hash, d );
'hash' 및 'd'와 함께 'rowid' 열을 활용하여 그룹화하면 이 쿼리는 'hash'와 'd'의 각각의 고유한 조합이 가장 낮은 'rowid'를 가진 행을 유지하도록 보장합니다. 결과적으로 중복 행이 테이블에서 효과적으로 제거됩니다.
위 내용은 기본 키 없이 SQLite 테이블에서 중복 행을 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!