집 >데이터 베이스 >MySQL 튜토리얼 >ROW_NUMBER()를 사용하여 SQL Server에서 중복 레코드를 삭제하는 방법은 무엇입니까?
데이터 무결성: SQL Server에서 중복 항목 제거
깨끗하고 효율적인 데이터베이스를 유지하려면 중복 기록을 정기적으로 제거해야 합니다. 이는 데이터 무결성과 최적의 데이터베이스 성능에 필수적입니다. 동일한 항목이 있는 경우(예: 동일한 이름을 가진 여러 직원) 중복을 제거하는 것이 필수적입니다.
SQL Server는 창 기능과 DELETE 문을 사용하여 강력한 솔루션을 제공합니다. 창 함수는 관련 행 전체에 걸쳐 계산을 수행하는 기능을 제공합니다.
설명을 위해 EmployeeName
열을 기준으로 중복 항목을 삭제하는 것을 고려해 보겠습니다. ROW_NUMBER()
함수는 파티션 내의 각 행(동일한 EmployeeName
값 그룹)에 고유한 순위를 할당합니다. 이를 통해 중복 항목을 선택적으로 삭제할 수 있습니다.
T-SQL 쿼리는 다음과 같습니다.
<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>
이 쿼리는 다음과 같이 작동합니다. 하위 쿼리는 ROW_NUMBER()
으로 분할되고 EmployeeName
으로 정렬된 empId
을 적용하여 임시 테이블을 생성합니다. 이는 각 직원 이름에 고유한 순위(RN)를 할당하고 중복된 항목에 순차적으로 번호를 매깁니다.
그런 다음 DELETE
문은 이 임시 테이블(별칭 'x')을 대상으로 하고 RN이 1보다 큰 모든 행을 제거합니다. 이렇게 하면 각 EmployeeName
의 첫 번째 인스턴스만 효과적으로 유지되고 후속 중복 항목은 모두 삭제됩니다.
실행 전 확인:
DELETE
문을 실행하기 전에 해당 문이 미치는 영향을 확인하는 것이 중요합니다. 다음 SELECT
문을 실행하세요:
<code class="language-sql">SELECT * FROM ( SELECT *, RN = ROW_NUMBER() OVER (PARTITION BY EmployeeName ORDER BY empId) FROM Employee ) x WHERE RN > 1;</code>
삭제 예정인 기록을 미리 볼 수 있습니다. 정확성을 확인한 후 DELETE
문을 실행하여 Employee
테이블
위 내용은 ROW_NUMBER()를 사용하여 SQL Server에서 중복 레코드를 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!