sql - T-SQL MERGE with condition 什么不匹配?
问题描述
假设我进行了与类似条件匹配的合并
MERGE TargetTable WITH(HOLDLOCK) AS target
USING SourceTable AS source
ON (target.ID = source.ID)
WHEN MATCHED AND (source.BitCondition = 0) THEN
UPDATE TargetTable
WHEN NOT MATCHED -- what is not matched??
INSERT INTO TargetTable
不匹配的只是记录不在两个表中还是像
NOT(MATCHED AND (source.BitCondition = 0))
注意我故意想忽略它匹配并且 BitCondition = 1 的情况
解决方案
NOT MATCHED
根据MERGE 文档的默认值是NOT MATCHED BY TARGET
,这意味着该行存在于源中但不存在于MERGE
.
为避免插入不匹配的行source.BitCondition = 1
,您可以添加AND
条件:
WHEN NOT MATCHED BY TARGET AND (source.BitCondition = 0) THEN
INSERT INTO TargetTable
推荐阅读
- python - 在 Spyder 中更改 python 版本
- watson-discovery - 将先前注释的文档导入 IBM Knowledge Studio
- xamarin - 无法使用 MsBuild 构建新创建的 Xamarin 跨平台项目
- c# - 如何确定是什么导致了 Newtonsoft.Json.Serialization.JsonProperty 的内存分配
- excel - 更改事件代码在堆栈空间外生成运行时错误“28”
- git - 如何修复使其进入管道的未签名提交错误
- database - DBMS、数据库引擎和存储引擎有什么区别?
- elasticsearch - 如何在 Elastigo 中设置 Content-Type 标头
- linux - For Loop for oracle 进程状态
- scala - Intellij:不是有效的项目 ID: