>데이터 베이스 >MySQL 튜토리얼 >ROW_NUMBER()를 사용하여 SQL Server에서 중복 레코드를 삭제하는 방법은 무엇입니까?

ROW_NUMBER()를 사용하여 SQL Server에서 중복 레코드를 삭제하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-12 12:01:46327검색

How to Delete Duplicate Records in SQL Server Using ROW_NUMBER()?

데이터 무결성: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.