Sql 使用merge语句插入/更新第三个表

Sql 使用merge语句插入/更新第三个表,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个源表和两个目标表,其中我必须使用合并操作来完成这项工作。 情况如下。我已经实现了将数据从源表合并到目标表1 但是,我在根据以下条件更新到目标表2时遇到问题。希望有人能帮忙 注: 我指的是post,但这篇文章显示了无条件更新第二个表,但我有一个基于源表和第二个目标表的条件 WHEN NOT MATCHED INSERT INTO target table 1 INSERT INTO target table 2(targettable1ID, value3) WHEN MATCHE

我有一个源表和两个目标表,其中我必须使用合并操作来完成这项工作。 情况如下。我已经实现了将数据从源表合并到目标表1

但是,我在根据以下条件更新到目标表2时遇到问题。希望有人能帮忙

注: 我指的是post,但这篇文章显示了无条件更新第二个表,但我有一个基于源表和第二个目标表的条件

WHEN NOT MATCHED
  INSERT INTO target table 1
  INSERT INTO target table 2(targettable1ID, value3)
WHEN MATCHED
  IF src.value3 != target2.value3
    UPDATE targettable1 only
  ELSE 
    UPDATE targettable1 and targettable2


merge into [TargetTable1] as tgt
using (select * from [SrcTable] as src)
on tgt.SrcTableID = src.SrcTableID
when not matched then insert (Value1, Value2) values(src.Value1, src.Value2)
when matched then update set tgt.Value1 = src.Value1, tgt.Value 2 = src.Value2

[SrcTable]
SrcTableID
Value1
Value2
Value3

[TargetTable1]
TargetTable1ID
SrcTableID
Value1
Value2

[TargetTable2]
TargetTable2ID
TargetTable1ID(foreign key for targettable1)
Value3(from SrcTable Value3)

不要相信这是可能的。我建议将两个合并语句包装在一个事务中。只是想一想——也许在开始/结束块中插入语句会更好help@BaconBits您能详细解释一下如何使用两个merge语句来达到预期的效果吗?TargetTable1和TargetTable2具有父子关系。@在不匹配和匹配时,只允许在内部后面使用一条sh-only-delete、insert或update语句。我不相信这是可能的。我建议将两个合并语句包装在一个事务中。只是想一想——也许在开始/结束块中插入语句会更好help@BaconBits您能详细解释一下如何使用两个merge语句来达到预期的效果吗?TargetTable1和TargetTable2具有父子关系。@当不匹配和匹配时,只允许在内部后面紧跟一条sh-only-delete、insert或update语句