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