특정 필드를 기반으로 SQL Server에서 중복 레코드 삭제
"EmployeeName"이라는 열을 포함하는 "Employee"라는 테이블이 있다고 가정합니다. 작업은 "EmployeeName" 필드를 기반으로 중복 레코드를 삭제하고 다음 데이터를 얻는 것입니다.
EmployeeName |
---|
Anand |
Anil |
Dipak |
SQL Server에서 TSQL을 사용하여 단일 쿼리로 이를 달성하려면 어떻게 해야 합니까?
창 기능을 이용한 솔루션:
이 문제를 해결하기 위해 윈도우 기능이 가능한 방법입니다. 창 함수를 사용하면 OVER 절로 정의된 파티션 내의 행 집합에 대해 작업을 수행할 수 있습니다. 이 예에서 파티션은 "EmployeeName" 열로 정의됩니다.
다음 쿼리는 "EmployeeName" 필드를 기반으로 중복 레코드를 효과적으로 식별하고 제거합니다.
<code class="language-sql">delete x from ( select *, rn=row_number() over (partition by EmployeeName order by empId) from Employee ) x where rn > 1;</code>
설명:
삭제된 기록 보기:
실제로 삭제 문을 실행하지 않고 삭제될 레코드를 미리 보려면 다음 선택 쿼리를 사용하세요.
<code class="language-sql">select * from ( select *, rn=row_number() over (partition by EmployeeName order by empId) from Employee ) x where rn > 1;</code>
위 내용은 단일 쿼리를 사용하여 특정 필드를 기반으로 SQL Server에서 중복 레코드를 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!