如何将表修剪为50000的前5000条记录

won*_*nea 0 t-sql

我有一个相当大的50000条记录表,我想将其减少到5000.如何编写SQL查询来删除其他45000条记录.基本表结构包含日期时间的列.

我想要的查询的大致想法如下

DELETE FROM mytable WHERE countexceeded(5000) ORDER BY filedate DESC;
Run Code Online (Sandbox Code Playgroud)

我可以用C#编写这个,以某种方式抓住行索引号并做一些解决方法,但有没有一个整洁的方法来做到这一点?

Mar*_*ith 7

您接受的答案不是有效的语法,因为DELETE不允许使用ORDER BY子句.您可以使用

;WITH T AS
(
SELECT TOP 45000 *
FROM mytable 
ORDER BY filedate 
)
DELETE FROM T
Run Code Online (Sandbox Code Playgroud)