首頁 >資料庫 >mysql教程 >如何在保留一個實例的同時刪除 T-SQL 中的重複行?

如何在保留一個實例的同時刪除 T-SQL 中的重複行?

Patricia Arquette
Patricia Arquette原創
2025-01-15 16:09:44259瀏覽

How Can I Delete Duplicate Rows in T-SQL While Keeping One Instance?

T-SQL:清除冗餘行同時保留單行記錄

維護資料完整性至關重要,消除重複行是其中一個關鍵步驟。在本例中,由於資料輸入錯誤,出現了重複記錄。您的目標是消除這些多餘的行,但需要精確操作—確保保留單一重複項。

解:使用 CTE 和 ROW_NUMBER()

在 SQL 2005 或更高版本中,您可以結合使用公用表格運算式 (CTE) 和 ROW_NUMBER() OVER 子句來實現您的目標。 CTE 充當過濾器,隔離相關數據,而 ROW_NUMBER() 函數為預定義分區組(在本例中為關鍵列)中的每一行分配一個序號。

此技術可讓您根據所需的條件隔離重複行。透過附加一個 WHERE 子句,其中包含檢查行號是否大於 1 的條件,您可以精確定位並刪除多餘的行。

實作

<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 FROM cte WHERE [rn] > 1</code>

自訂選項

CTE 中的 ORDER BY 子句提供了對行進行排序的彈性。如果您的目標是保留最新的行,請按相關的日期時間列以降序排列結果(例如,ORDER BY [baz] DESC)。請記住,排序標準的選擇完全可以根據您的特定需求進行自訂。

以上是如何在保留一個實例的同時刪除 T-SQL 中的重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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