如何在沒有唯一鍵的情況下刪除 SQL Server 中的重複行?
Jan 23, 2025 am 01:51 AM高效率刪除 SQL Server 中的重複行:CTE 方法
在處理缺少唯一鍵的 SQL Server 表時,消除重複行需要採取策略性方法。 使用公用表表達式 (CTE) 結合 ROW_NUMBER()
函數可以有效地實現這一點。
這是示範此技術的解決方案:
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;
登入後複製
詳細說明:
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中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器)
