我有两张桌子@mtss table:
@mtss
( [MM],[YYYY],[month_Start],[month_Finish],[ProjectID],[ProjectedBillable],[ProjectedPayable],[ActualBilled],[ActualPaid],[Total_To_Bill],[Total_To_Pay])
tbl_Snapshot ([MM],[YYYY],[month_Start],[month_Finish],[ProjectID],[ProjectedBillable],[ProjectedPayable],[ActualBilled],[ActualPaid],[Total_To_Bill],[Total_To_Pay]
)
我需要比较两个表并找到匹配
如果tbl_snapshot [MM]和[ProjectId]匹配,则删除tbl_snapshot中的记录并从@mtts插入记录。
提前致谢。
答案 0 :(得分:2)
自2008年以来,您可以使用MERGE
执行单个逻辑操作:
;merge into tbl_Snapshot s
using @mtss m on s.MM = m.MM and s.ProjectId = m.ProjectId
when matched then update
set
YYYY = m.YYYY,
month_Start = m.month_Start
/* Other columns as well, not going to type them all out */
;
如果数据只存在于一个表而不存在另一个表中,并且存在加法匹配子句,这也很容易扩展到您可能必须处理的其他情况。
当然,进一步思考,在这种情况下,一个简单的UPDATE
也可以。 DELETE
后跟INSERT
(其中已删除和插入的行通过键相关)相当于UPDATE
。
答案 1 :(得分:0)
类似的东西:
DELETE tbl_snapshot
FROM tbl_snapshot ss
INNER JOIN @mtss m ON m.MM = ss.MM AND m.ProjectId = ss.ProjectId
(我把代码直接编写到这个编辑器中,因此它可能有错误,但它应该让你知道如何继续)