使用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,可见得复记录删除,相同的记录仅留下一笔:

删除重复Row记录数据的更多相关文章

  1. ROWID的使用——快速删除重复的记录

    ROWID是数据的详细地址,通过rowid,oracle可以快速的定位某行具体的数据的位置.ROWID可以分为物理rowid和逻辑rowid两种.普通的表中的rowid是物理rowid,索引组织表(I ...

  2. SqlServer中怎么删除重复的记录(表中没有id)

    SqlServer中怎么删除重复的记录(表中没有id) 其实我在别的网址也查到过删除重复的记录,不知道我是我SqlServer2012版本太低还是啥原因 delete from scwhere (c# ...

  3. SQL删除重复的记录(只保留一条)

    首先新建表: --创建示例表 CREATE TABLE t ( id ,) PRIMARY KEY, a ), b ) ) --插入数据 INSERT INTO t SELECT 'aa','bb' ...

  4. Oracle 删除重复的记录,只保留一条

    查询及删除重复记录的SQL语句   1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断   select * from 表 where Id in (select Id from 表 g ...

  5. SQL 中如何删除重复(每列数据都重复)的记录,只保留一行?

    如果数据表没有做好约束,那么数据库中难免会遇到数据重复的情况.今天就遇到这么个看起来简单却又费神的问题---如何去重. ------期间感谢微信公众号"有关SQL"的博主大牛提供的 ...

  6. 利用ROW_NUMBER中的partition by 删除重复Key的数据

    With temp As ( Select ROW_NUMBER() over(partition by LogisticsPlan order by createon) rowID,ID from ...

  7. sql删除重复的记录保留一条

    delete from A_TO_NOW where yuan_name in (select   yuan_name from A_TO_NOW group by   yuan_name   hav ...

  8. mysql 数据表中查找、删除重复记录

    为了性能考虑,在阅读之前提醒大家,如果有子查询,子查询查询到的数据最好不要超过总数据量的30%. 查询有重复数据的记录 select * from F group by a,b,c,d having ...

  9. oracle_SQL 实验查询及删除重复记录 依据条件 (row)

    除数据库表中的重复记录 根据条件 ① 创建表准备数据 创建表 tab_test -- Create table create table TAB_TEST ( ID NUMBER, NAME NVAR ...

随机推荐

  1. Hibernate连接池设置

    在公司第一次做项目放到服务器上测试,发现每隔一段时间不用数据库就连接不上了(以前学过连接池,很久没用就忘了),在myeclipse上的时候没发现,网上搜索才发现是hibernate连接池配置问题. 1 ...

  2. fragment 动态加载

    /** * 测试使用Fragment(动态使用) 1. * 使用FragmentManager和FragmentTransaction动态使用一个Fragment 2. 方式: * add(viewI ...

  3. 跳转appStore评分

    跳转到AppStore让用户能够给我们的应用进行评分,有两种方法,一种是跳出应用,跳转到AppStore,进行评分.另一种是在应用内,内置AppStore进行评分. PS:appleID在https: ...

  4. dojo 官方翻译 dojo/string 版本1.10

    官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/string.html#dojo-string require(["dojo/st ...

  5. webpack-dev-server原理及要点笔记

    webpack-dev-server启动了一个使用express的Http服务器,这个服务器与客户端采用websocket通信协议,当原始文件发生改变,webpack-dev-server会实时编译. ...

  6. Linux三种网络-vmware三种网络模式

    Host-Only 桥接 NAT VMware虚拟机三种联网方法及原理 一.Brigde——桥接:默认使用VMnet0 1.原理: Bridge 桥"就是一个主机,这个机器拥有两块网卡,分别 ...

  7. html5--2.4新的布局元素(3)-section

    html5--2.4新的布局元素(3)-section 学习要点 了解section元素的语义和用法 通过实例理解section元素的用法 article元素和section元素的区别和共同点 art ...

  8. Visual Studio 2012简体中文专业版密钥(激活码)

    VS2012 正式版在Beta版的基础上进行了很多改进,尤其是加入了全新的用户界面. VS2012 的硬件需求与VS2010相同,不过由于 Visual Studio 2012 利用了新版 Windo ...

  9. BZOJ4278 [ONTAK2015]Tasowanie[后缀数组+贪心]

    题目 求两数组归并后的数组最小字典序排列. 嘛,可能本人在贪心这块还是太弱了(或者说什么都弱),如果不知道是字符串题估计也想不起来用sa. 显然看得出归并时字典序小的那个数组先往里面加,这就是要比较两 ...

  10. javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据

    javacpp-ffmpeg系列: javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片 javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转 ...