【问题标题】:Query removing previous data from the same query SQL Server查询从同一查询 SQL Server 中删除以前的数据
【发布时间】:2016-04-02 12:11:38
【问题描述】:

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

【问题讨论】:

  • 您可以创建一个 SQL Server 代理作业,让它每天运行 3 次存储过程或任何您想要的代码。
  • 您能否只添加一个 DailyFlag BIT 列,将除您在第一个查询中插入的行之外的所有行都设置为 0?如果您新插入的那些行将此标志设置为1,您可以在当天晚些时候轻松删除这些行
  • 给出表名和更多细节。这将被关闭。
  • @TabAlleman 如果不存在作为“但删除”的重复项,您如何阅读

标签: sql sql-server tsql


【解决方案1】:

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

假设您的结构如下:

**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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2016-05-02
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    相关资源
    最近更新 更多