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

问题描述 投票:0回答:3

NOT MATCHED BY SOURCE
NOT MATCHED BY TARGET
有什么区别?

例如:

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

WHEN NOT MATCHED BY TARGET
- 意味着记录存在于源中但不存在于目标中?所以我们可以插入它们?

sql sql-server sql-merge
3个回答
65
投票

WHEN NOT MATCHED BY TARGET - 您应该使用此子句将新行插入到目标表中。您插入到表中的行是源表中目标表中没有匹配行的行。

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


7
投票

请谨慎使用,因为您可能需要进一步限定

WHEN NOT MATCHED BY SOURCE

例如,如果

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

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


1
投票

您想要将目标表与源表匹配。最后你的目标表应该与源表类似

WHEN NOT MATCHED BY SOURCE
:关注SOURCE:目标中的某些行在source表中没有任何等效项。所以你应该删除它。

WHEN NOT MATCHED BY Target
:关注目标:源中的某些行在目标表中没有任何等效项。这样你就可以插入它们

© www.soinside.com 2019 - 2024. All rights reserved.