删除重复Row记录数据

使用CTE,ROW_NUMBER,PARTITION BY来处理数据表重复记录。

先准备下面的数据:

 

复制代码
IF OBJECT_ID('tempdb.dbo.#Part') IS NOT NULL DROP TABLE #Part

CREATE TABLE #Part (
    [ID] INT,
    [Item] NVARCHAR(40),
    [Category] NVARCHAR(25),
    [Qty] DECIMAL(18,2)
)
GO
INSERT INTO #Part ([ID],[Item],[Category],[Qty]) VALUES (23394,'I32-GG443-QT0098-0001','S',423.65),
                                                        (45008,'I38-AA321-WS0098-0506','B',470.87),
                                                        (14350,'K38-12321-5456UD-3493','B',200.28),
                                                        (64582,'872-RTDE3-Q459PW-2323','T',452.44),
                                                        (23545,'098-SSSS1-WS0098-5526','S',500.00),
                                                        (80075,'B78-F1H2Y-5456UD-2530','T',115.06),
                                                        (53567,'PO0-7G7G7-JJY098-0077','Q',871.33),
                                                        (44349,'54F-ART43-6545NN-2514','S',934.39),
                                                        (36574,'X3C-SDEWE-3ER808-8764','Q',607.88),
                                                        (36574,'RVC-43ASE-H43QWW-9753','U',555.19),
                                                        (14350,'K38-12321-5456UD-3493','B',200.28),
                                                        (64582,'872-RTDE3-Q459PW-2323','T',452.44),
                                                        (80075,'B78-F1H2Y-5456UD-2530','T',115.06),
                                                        (53567,'PO0-7G7G7-JJY098-0077','Q',871.33),
                                                        (44349,'54F-ART43-6545NN-2514','S',934.39),
                                                        (44349,'54F-ART43-6545NN-2514','S',934.39),
                                                        (36574,'X3C-SDEWE-3ER808-8764','Q',607.88)
GO
Source Code
复制代码

 

处理,并执行把重复行删除。

 

复制代码
;WITH Duplicate_Records AS
(
    SELECT  [ID],
            [Item],
            [Category],
            [Qty],
            ROW_NUMBER() OVER (
                            PARTITION BY [ID],
                                        [Item],
                                        [Category],
                                        [Qty]
                            ORDER BY [ID]    
    ) AS [row_num]
    FROM #Part
)
DELETE FROM Duplicate_Records WHERE [row_num] > 1;
Source Code
复制代码

 

接下来,运行下面的SQL,可见得复记录删除,相同的记录仅留下一笔:

 

posted @   Insus.NET  阅读(635)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
历史上的今天:
2016-05-19 在IIS启用MP4
2013-05-19 Repeater控件第前10笔记录高亮显示
2011-05-19 使用PreviousPage获取源页信息 2
2011-05-19 使用PreviousPage获取源页信息
点击右上角即可分享
微信分享提示