当前位置:  开发笔记 > 编程语言 > 正文

如何在SQL Server中保留最新记录并删除旧记录?

如何解决《如何在SQLServer中保留最新记录并删除旧记录?》经验,为你挑选了1个好方法。

我的表按照这样的desc值排序

aaa  12am
aaa  11am
bbb  12am
bbb  11am

我需要删除第2行和第4行并保留最新的第2行



1> Giorgos Bets..:

你可以使用它做CTEROW_NUMBER:

;WITH ToDelete AS (
   SELECT ROW_NUMBER() OVER (PARTITION BY name ORDER BY timefield DESC) AS rn
   FROM mytable
)
DELETE FROM ToDelete
WHERE rn > 1

rn=1识别每个切片的最新记录.删除所执行的操作CTE被传播到真正的表,并删除一切,但最新的记录.

编辑:

要为每张幻灯片选择最新的记录,请使用:

;WITH CTE AS (
   SELECT *,
          ROW_NUMBER() OVER (PARTITION BY name 
                             ORDER BY timefield DESC) AS rn
   FROM mytable
)
SELECT * 
FROM CTE
WHERE rn = 1


@ user3831886,将`delete`改为`select` :)
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有