查询从同一查询中删除以前的数据SQL Server

时间:2015-12-28 16:22:42

标签: sql sql-server tsql

我需要在特定时间运行查询并将其保存在其他表中,该部分我已经完成了,但后来我需要运行相同的查询但需要排除它在第一个生成的数据运行查询。这是一个必须每天进行三次的过程。有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

这个问题有点令人困惑,但我想你想每天备份几次上次备份后插入源表中的记录。

我们假设您的结构如下:

**DataTable**
Id (IDENTITY)
Value

**BackupTable**
Id
SourceId             -- identifies the source. Can be used when merging data from multiple sources
RefId                -- identifier in source's scope (in our case DataTable.Id)
Value                -- value copied

在我们的例子中,作业应该查找那些尚未插入的值:

DECLARE @SourceId INT = 1            -- this is a constant for DataTable as source
DECLARE @maxIdForSource INT = (SELECT MAX(RefId) FROM BackupTable WHERE SourceId = @SourceId)

INSERT INTO BackupTable
(SourceId, RefId, Value)
SELECT @SourceId, Id, Value
FROM DataTable 
WHERE Id > @maxIdForSource

如果您没有合并来自多个来源的数据,则根本不会定义SourceId。