首頁 >資料庫 >mysql教程 >T-SQL中如何根據鍵列高效率刪除重複行?

T-SQL中如何根據鍵列高效率刪除重複行?

Barbara Streisand
Barbara Streisand原創
2025-01-15 16:10:43317瀏覽

How to Efficiently Delete Duplicate Rows in T-SQL Based on Key Columns?

基於主鍵列高效率刪除T-SQL中的重複行

問題:

由於資料建立過程中的錯誤,表中包含大量重複行。目標是在保留每個主鍵列唯一組合的一行的同時,消除多餘的行。但是,表中包含一些與問題無關的列,這些列的資料略有不同,必須忽略。

解:

對於SQL Server 2005及更高版本,可以使用OVER()函數和公用表表達式(CTE)來有效率地刪除重複行。

CTE和DELETE語句:

<code class="language-sql">WITH cte AS (
  SELECT [foo], [bar], 
     row_number() OVER(PARTITION BY foo, bar ORDER BY baz) AS [rn]
  FROM TABLE
)
DELETE cte WHERE [rn] > 1</code>

說明:

  • CTE根據foo和bar列建立排序的行子集。
  • ORDER BY baz子句是可選的,允許在每個分區(主鍵列組)內進行排序。
  • DELETE語句刪除CTE中排名大於1的所有行,有效地消除了重複項,同時保留每個主鍵列組合的一行。

以上是T-SQL中如何根據鍵列高效率刪除重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn