高效率刪除 SQL Server 中的重複行,同時保留單行
資料完整性在資料庫管理中至關重要。 本文解決了從 SQL Server 表中刪除重複行同時確保每個唯一資料集至少保留一個執行個體的常見問題。 T-SQL 使用公用表格運算式 (CTE) 提供了一個簡單的解決方案。
CTE 中的 OVER
子句是此過程的關鍵。 這是一個說明性範例:
<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 為由列 rn
和 [foo]
定義的群組中的每一行分配唯一的行號 ([bar]
)。 ORDER BY [baz]
子句決定保留每個群組中的哪一行; 您應該根據您的特定需求進行調整。 然後,DELETE
語句會刪除 rn
大於 1 的所有行,為 [foo]
和 [bar]
的每個唯一組合只留下一個代表行。
此方法提供了一種有效且可靠的方法來維護 SQL Server 資料庫中的資料清潔度和準確性。
以上是如何在保留一行的同時刪除SQL Server中的重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!