sql - 删除基于 30 天数据范围的归档数据
问题描述
我在服务器中有 2 个 sql 实例。1 个名为 TRC(在线数据库),另一个名为 TRC_ARC(归档数据库)。
我已经成功地将基于最早 EntryDate 的 30 天数据从 TRC 转移到 TRC_ARC。
查询是
use TRC_ARC
--T_TRC_AssyPoka Table
declare @MaxNo datetime = (select max(EntryDate) from T_TRC_AssyPoka) --date max current archived table
insert into TRC_ARC.dbo.T_TRC_AssyPoka --destination
select * from TRC.dbo.T_TRC_AssyPoka --source
where EntryDate > @MaxNo --source entrydate > date max current archived table
and DateDiff(D, @MaxNo, EntryDate) < 30 -- date range 30 days
如何从 TRC 中删除存档的 30 天数据?因为我尝试使用以下查询,但它返回受影响的不同行。
use TRC_ARC
--T_TRC_AssyPoka Table
declare @MaxNo datetime = (select max(EntryDate) from T_TRC_AssyPoka) --date max current archived table
**delete from TRC.dbo.T_TRC_AssyPoka** --destination
select * from TRC.dbo.T_TRC_AssyPoka --source
where EntryDate > @MaxNo --source entrydate > date max current archived table
and DateDiff(D, @MaxNo, EntryDate) < 30 -- date range 30 days
解决方案
use TRC_ARC
--T_TRC_AssyPoka Table
declare @MaxNo datetime = (select max(EntryDate) from T_TRC_AssyPoka) --date max current archived table
**delete from TRC.dbo.T_TRC_AssyPoka** --destination
select * from TRC.dbo.T_TRC_AssyPoka --source
where EntryDate > @MaxNo --source entrydate > date max current archived table
and DateDiff(D, @MaxNo, EntryDate) < 30 -- date range 30 days
根据您的上述描述,我的理解是您想删除已插入表“TRC_ARC.dbo.T_TRC_AssyPoka”的行。正确的?
如果是这样,您可以尝试以下脚本。
use TRC_ARC
--T_TRC_AssyPoka Table
declare @MaxNo datetime = (select max(EntryDate) from T_TRC_AssyPoka) --date max current archived table
delete from TRC.dbo.T_TRC_AssyPoka
where EntryDate > @MaxNo --source entrydate > date max current archived table
and DateDiff(D, @MaxNo, EntryDate) < 30 -- date range 30 days
此致,
雷切尔