首頁 > 資料庫 > mysql教程 > 如何使用T-SQL有效率地刪除SQL Server中的重複記錄?

如何使用T-SQL有效率地刪除SQL Server中的重複記錄?

Patricia Arquette
發布: 2025-01-12 11:57:43
原創
698 人瀏覽過

How to Efficiently Delete Duplicate Records in SQL Server Using T-SQL?

使用 T-SQL 刪除 SQL Server 中的重複行

本指南示範如何使用 T-SQL 有效地從 SQL Server 表中刪除重複行,並專注於特定列。 讓我們使用帶有 Employee 列的 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>
登入後複製

此查詢使用 ROW_NUMBER() 為每個具有相同 EmployeeName 值的群組(分區)中的每一行分配唯一的排名。 PARTITION BY EmployeeName 子句將行分組,ORDER BY empId 決定每組內的排名順序(假設 empId 是唯一識別碼)。 rn代表等級。

WHERE rn > 1 子句針對每組內排名大於 1 的行,有效刪除除第一次出現(排名為 1)之外的所有重複項。

在執行DELETE語句之前,預覽將受影響的行至關重要。 將 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>
登入後複製

這允許在永久刪除任何資料之前進行驗證。

以上是如何使用T-SQL有效率地刪除SQL Server中的重複記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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