SQL 合并与目标不匹配 vs 与源不匹配
SQL merge not matched by target vs not matched by source
NOT MATCHED BY SOURCE
和 NOT MATCHED BY TARGET
有什么区别?
例如:
是否WHEN NOT MATCHED BY SOURCE
表示记录存在于目标中但不存在于源中? - 所以我们可以 删除 它们 ?
和 WHEN NOT MATCHED BY TARGET
- 意味着记录存在于源中但不存在于目标中?所以我们可以插入它们?
WHEN NOT MATCHED BY TARGET - 您应该使用此子句将新行插入目标 table。您插入 table 的行是源 table 中目标中没有匹配行的那些行。
WHEN NOT MATCHED BY SOURCE - 如果要从目标 table 中删除与源 table
中的行不匹配的行
谨慎使用,因为您可能需要进一步限定 WHEN NOT MATCHED BY SOURCE
。
例如,如果 TARGET
table 有一个 SOURCE
没有的列..并且您在上述插入过程中设置了目标列..那么您'您可能想要定义该约束:
WHEN NOT MATCHED BY SOURCE AND (TARGET.SomeColumn = yada)
NOT MATCHED BY SOURCE
和 NOT MATCHED BY TARGET
有什么区别?
例如:
是否WHEN NOT MATCHED BY SOURCE
表示记录存在于目标中但不存在于源中? - 所以我们可以 删除 它们 ?
和 WHEN NOT MATCHED BY TARGET
- 意味着记录存在于源中但不存在于目标中?所以我们可以插入它们?
WHEN NOT MATCHED BY TARGET - 您应该使用此子句将新行插入目标 table。您插入 table 的行是源 table 中目标中没有匹配行的那些行。
WHEN NOT MATCHED BY SOURCE - 如果要从目标 table 中删除与源 table
中的行不匹配的行谨慎使用,因为您可能需要进一步限定 WHEN NOT MATCHED BY SOURCE
。
例如,如果 TARGET
table 有一个 SOURCE
没有的列..并且您在上述插入过程中设置了目标列..那么您'您可能想要定义该约束:
WHEN NOT MATCHED BY SOURCE AND (TARGET.SomeColumn = yada)