首頁 > 資料庫 > mysql教程 > 如何在沒有唯一鍵的情況下刪除 SQL Server 中的重複行?

如何在沒有唯一鍵的情況下刪除 SQL Server 中的重複行?

Susan Sarandon
發布: 2025-01-23 01:51:09
原創
906 人瀏覽過

How to Delete Duplicate Rows in SQL Server Without a Unique Key?

高效率刪除 SQL Server 中的重複行:CTE 方法

在處理缺少唯一鍵的 SQL Server 表時,消除重複行需要採取策略性方法。 使用公用表表達式 (CTE) 結合 ROW_NUMBER() 函數可以有效地實現這一點。

這是示範此技術的解決方案:

<code class="language-sql">WITH RowNumberedRows AS (
   SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
       RN = ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col1)
   FROM dbo.Table1
)
DELETE FROM RowNumberedRows
WHERE RN > 1;</code>
登入後複製

詳細說明:

CTE,恰當地命名為 RowNumberedRows,為表中的每一行分配一個唯一的行號 (RN)。 ROW_NUMBER() 函數根據 col1 列對行進行分區,並在每個分區內分配順序編號。 這可確保每個重複組的第一次出現的 RN 為 1。

然後,DELETE 語句以 CTE 為目標,刪除 RN 大於 1 的所有行。這只留下每個重複集的第一行,從而有效地刪除重複項。

範例:

將此查詢應用於範例資料會產生以下結果:

COL1 COL2 COL3 COL4 COL5 COL6 COL7
john 1 1 1 1 1 1
sally 2 2 2 2 2 2

觀察到重複的「john」行已成功消除。

此方法的適應性值得關注。透過調整 ROW_NUMBER() 函數中的分區列(例如 PARTITION BY col1, col2),您可以根據需要基於多個列定義唯一性。

以上是如何在沒有唯一鍵的情況下刪除 SQL Server 中的重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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