我正在一项作业中运行查询,该作业每天都会在MS SQL中更新用户列表。 下面的查询每天运行以更新数据
if object_id('report.dbo.data') is not null
drop table report.dbo.data
SELECT
UserID,
date
into report.dbo.data
from data a
where date >= '2019-01-01'
and date < getdate()
此查询的目标是每天更新用户列表。这里的问题是,每天运行它需要更长的时间。
例如,我可能已经有数据到2019年4月20日。由于我每天运行一次,因此数据将从01/01/2019到04/25/2019再次运行,而不仅仅是使用04/20/2019-04/25/2019的新用户ID更新。
与运行整个代码以刷新所有数据相比,您可以通过示例代码为我提供带有新数据更新report.dbo.data的示例代码吗?
答案 0 :(得分:1)
您的代码将删除并重新创建整个表,而不仅仅是表的数据(内容)。如果它不存在,请创建一个空表report.dbo.data
并仅追加新数据。
if object_id('report.dbo.data') is null
SELECT UserID, date into report.dbo.data from data a where 1=0 -- create empty table if needed
insert into report.dbo.data(UserID, date) -- append new data
(SELECT UserID, date from data a where date > (select max(date) from data) and date < getdate())
答案 1 :(得分:0)
通过'2019-01-01'
传递max(date) from data
代替硬编码日期。
Insert into report.dbo.data
SELECT UserID, date from data a where date >= (select max(date) from data ) and date < getdate()