我正在使用sql server 2012并拥有一个数据库。
在这个数据库中,我有2个表。 1表后端到实时数据。另一个完全相同的结构,但一个临时表 - 没有实时系统解决它。
我想编写一个sql查询,将其包含在针对登台表运行的存储过程/ sql作业中,并将数据更新/插入到实时表中。如果记录存在于实时表中,则更新它,如果没有插入它。由于临时表在每天需要运行时可能有~100,000 - 我担心性能,特别是实时表被锁定的可能性。在查询运行时,有可能从另一个源更新实时表,因此可能需要在行级别进行锁定。
我已经概述了这个过程和我的关注,所以我希望在编写查询时提供帮助。我不需要影响实时表的性能,但不确定在传输数据时没有其他系统更新每行的行。我怎么能用sql做这个?
答案 0 :(得分:1)
您想要合并:
merge into Emp2 as Target
using emp as Source on Target.FirstName=Source.Firstname and Target.LastName=Source.lastName
when matched then
update set Target.FirstName=Source.FirstName,
Target.LastName = Source.LastName
when not matched then
insert (FirstName,LastName, LastTraining) values (Source.FirstName,Source.LastName,Source.LastTraining);