SQL合并与目标不匹配,与源不匹配

loa*_*ger 18 sql sql-server sql-merge

需要一点帮助,我的SQL几乎不存在......

NOT MATCHED BY SOURCE vs 之间有什么区别?NOT MATCHED BY TARGET

例如:

是否WHEN NOT MATCHED BY SOURCE意味着记录存在于目标中而不是源中?- 所以我们可以删除它们?

并且WHEN NOT MATCHED BY TARGET- 表示记录存在于源中但不存在于目标中?所以我们可以插入它们?

小智 28

当没有与目标匹配时 - 您应该使用此子句将新行插入目标表中.您插入表中的行是源表中的那些行,目标中没有匹配的行.

何时不与源匹配 - 如果要从目标表中删除与源表中的行不匹配的行


小智 7

请谨慎使用,因为您可能需要进一步限定WHEN NOT MATCHED BY SOURCE.

例如,如果TARGET表有一列不SOURCE..并且您在上述插入期间设置该目标列..那么您可能需要定义该约束:

WHEN NOT MATCHED BY SOURCE AND (TARGET.SomeColumn = yada)