סטנ*_*ונן 6 sql t-sql sql-server datetime sql-delete
我正在使用MS SQL数据库,并且有一个名为“ Logs”的表,如下所示:

记录在这里一个接一个地添加,因此表在几天/几周后变得很大。
我需要定期进行的是一些清理工作。即我需要一个SQL查询,该查询将删除较旧的行并仅在此表中保留最近的100条记录。
我同意最好让它“删除早于some_date的记录” ...以前是这样的,但是客户希望它与众不同:(所以...在这里。
顺便说一句:我对人们对此问题持否定态度感到失望。有什么问题吗?... 想像一下:这个问题已经产生了4个答案!!!……一个人决定对此否定!现在我真的不知道该怎么想...周围的人很奇怪:(
Sal*_*n A 10
您可以使用以下之一:
-- offset clause
WITH goners AS (
SELECT *
FROM Logs
ORDER BY DateTime DESC
OFFSET 100 ROWS
)
DELETE FROM goners
-- numbered rows
WITH goners AS (
SELECT ROW_NUMBER() OVER(ORDER BY DateTime DESC) AS rn, Logs.*
FROM Logs
)
DELETE FROM goners
WHERE rn > 100
-- nth value
-- note that this "keeps" all rows that tie for last place
DELETE FROM Logs
WHERE DateTime < (
SELECT MIN(DateTime)
FROM (
SELECT TOP 100 DateTime
FROM Logs
ORDER BY DateTime DESC
) AS x
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4754 次 |
| 最近记录: |