将SQL与条件合并

时间:2012-12-17 13:43:19

标签: sql ssis

我有一个场景,我需要用户合并SQL语句来同步两个表。假设我有两个表,表A和表B.模式是相同的,除了表A中的一个额外列。额外列是一个标志,告诉我哪些记录已准备好在表B中插入/更新。让我们说标志列是IsReady。它将是真还是假。

我可以在Merge Statement中使用Isready = True,或者我需要一个Temp表来将表A中的所有记录移动到Temp Table,其中IsReady = True,然后在TempTable和表B上使用Merge SQL ???

2 个答案:

答案 0 :(得分:1)

是的,您可以在合并条件中使用该列。

merge tableB targetTable
using tableA sourceTable
on sourceTable.IsReady = 1 and [any other condition]
when not matched then
insert ...
when matched and [...] then
update ...

答案 1 :(得分:0)

这可能会对你有帮助,

merge into tableB 
using tableA  
on tableB.IsReady=true
when not matched then
insert (tableB.field1,tableB.field2..)
values (tableA.field1,tableA.field2..);
commit;