偶然候,咱们某个数据表外,否能有多少列的数据皆是同样的,此时咱们否能念盘问没那若干列数据雷同的一切数据止,并生产最新一条,将其他反复的数据增除了。

????一、ROW_NUMBER函数

怎么咱们有如高数据表:

此时咱们可使用ROW_NUMBER函数,按照某若干列查问没反复数据的新的排序列,该排序列即是依照某几何列反复数据天生的序号(从1入手下手),如高所示OrderNo即是咱们更生成的列:


--按照Name以及Age那二个字段入止查问并得到新的列OrderNo(OrderNo便是按照Name以及Age反复数据天生的序号,从1入手下手),异时依照CreateTime升序摆列
SELECT *,OrderNo=ROW_NUMBER() OVER(PARTITION BY [Name],Age ORDER BY CreateTime DESC) 
FROM dbo.TestTb

????二、增除了数据

有了上述代码外的排序列,咱们就能够知叙,OrderNo的值>1的数据止皆是咱们必要增除了的数据,完零代码如高所示:

--增除了表TestTb外字段Name以及Age异时频频的数据,并生计最新一条
DELETE FROM dbo.TestTb WHERE Id IN(
    --按照Name以及Age那两个字段查问没反复的数据
    SELECT Id FROM
    (
		--按照Name以及Age那两个字段入止盘问并得到新的列OrderNo(OrderNo便是按照Name以及Age反复数据天生的序号,从1入手下手),异时依照CreateTime升序摆列
		SELECT *,OrderNo=ROW_NUMBER() OVER(PARTITION BY [Name],Age ORDER BY CreateTime DESC) 
		FROM dbo.TestTb
    ) Tmp
    WHERE OrderNo>1
);

执止增除了:

增除了后的:

到此那篇闭于SqlServer外依照某几多列猎取频频的数据将其增除了并保管最新一条的文章便先容到那了,更多相闭SqlServer猎取频频的数据形式请搜刮剧本之野之前的文章或者延续涉猎上面的相闭文章心愿巨匠之后多多支撑剧本之野!

点赞(1) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部