집 >데이터 베이스 >MySQL 튜토리얼 >하나의 복사본을 유지하면서 중복된 PostgreSQL 행을 삭제하는 방법은 무엇입니까?
단일 복사본 보존: 중복 PostgreSQL 행 삭제
데이터 관리 영역에서 중복 행이 발생하면 문제가 발생할 수 있습니다. 널리 사용되는 관계형 데이터베이스 관리 시스템인 PostgreSQL은 이러한 상황을 처리하기 위한 다양한 옵션을 제공합니다. 사용자가 각 집합에서 단일 복사본을 유지하면서 중복 행을 삭제하려고 할 때 한 가지 특정 시나리오가 발생합니다.
쿼리 솔루션
이를 달성하기 위해 SQL 쿼리를 사용할 수 있습니다. . 다음 쿼리는 제공된 문서에 설명된 단계를 따릅니다.
DELETE FROM foo WHERE id NOT IN (SELECT min(id) --or max(id) FROM foo GROUP BY hash)
설명
이 쿼리는 하위 쿼리를 사용하여 각 그룹의 최소 또는 최대 ID 값을 식별합니다. 중복 행. 해시 열은 중복이 결정되는 기준을 나타냅니다. 최소값 또는 최대값과 일치하지 않는 ID를 제외함으로써 쿼리는 각 중복 세트의 단일 복사본을 보존하고 나머지는 삭제합니다.
대체 쿼리
대체 접근 방식 ROW_NUMBER() OVER () 함수를 사용합니다.
DELETE FROM foo AS f WHERE ROW_NUMBER() OVER (PARTITION BY hash ORDER BY id) > 1
이 쿼리는 행 번호를 각 행에 할당하고 해시 열로 분할하고 id 열을 기준으로 오름차순으로 정렬합니다. 그런 다음 행 번호가 1보다 큰 행(즉, 중복)을 삭제합니다.
결론
제시된 쿼리 중 하나를 PostgreSQL에 구현하면 사용자가 효과적으로 중복을 삭제할 수 있습니다. 각 세트에서 단일 복사본을 보존하면서 행. 이 접근 방식을 사용하면 원본 데이터 세트의 무결성을 유지하면서 중복 데이터를 제거할 수 있습니다.
위 내용은 하나의 복사본을 유지하면서 중복된 PostgreSQL 행을 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!