首頁 > 資料庫 > mysql教程 > 如何使用 ROW_NUMBER() 刪除 SQL Server 中的重複記錄?

如何使用 ROW_NUMBER() 刪除 SQL Server 中的重複記錄?

Patricia Arquette
發布: 2025-01-12 12:01:46
原創
326 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板