从表中删除内容的日常 SQL 任务

Posted

技术标签:

【中文标题】从表中删除内容的日常 SQL 任务【英文标题】:Daily SQL Task to delete contents from a table 【发布时间】:2011-04-19 21:57:19 【问题描述】:

嘿,我想知道如何在特定表上设置清理任务以删除一周前的内容。

我使用的是 SQL Server 2005

【问题讨论】:

【参考方案1】:

在 SQL Server Management Studio 中,展开 SQL Server 代理,右键单击“作业”并选择“新建作业...”

在“步骤”中,创建一个“新建...”并输入:

DELETE YourTable WHERE YourDate<GETDATE()-7

或不考虑时间使用:

DELETE YourTable WHERE YourDate<DATEADD(day,DATEDIFF(day,0,GETDATE()-7),0)

在“日程安排”中,您可以让它在每周日或您需要的任何时间运行。

【讨论】:

“不考虑时间使用”是什么意思? GETDATE() 返回当前日期和当前时间,不考虑时间示例将 GETDATE() 函数包装在语法中以将时间设置为 00:00:00.000。试试看运行SELECT GETDATE(), DATEADD(day,DATEDIFF(day,0,GETDATE()-7),0)【参考方案2】:

您可以创建一个删除一周前所有内容的作业。例如,

DELETE FROM MyTable
WHERE DateCreated <= dateadd(d, -7, getdate())

不过,这假设您有某种方法可以跟踪记录在表中的存在时间,并且还假设没有外键约束。

然后您可以安排作业在用户未连接时运行。

【讨论】:

以上是关于从表中删除内容的日常 SQL 任务的主要内容,如果未能解决你的问题,请参考以下文章

SQL 基础之用户角色日常操作(十六)

BigQuery 标准 SQL:从表中删除重复项

SQL查询:从表中删除除最新N之外的所有记录?

sql 从表中删除重复项。

day05_日常SQL练习

sql 使用Mysql中的ID从表中删除许多行