Sql server 简单合并状态不工作

Sql server 简单合并状态不工作,sql-server,tsql,Sql Server,Tsql,我不知道我做错了什么 MERGE dbo.[table1] target USING (SELECT [qId], [cId], [deleted] FROM dbo.[table1] WHERE [qId] = 1 AND [cId] = 2) source ON (target.[qId] = source.[qId] AND target.[cId] = source.[cId]) WHEN MATCHED THEN UPDATE SET target.[delet

我不知道我做错了什么

MERGE dbo.[table1] target
USING (SELECT [qId], [cId], [deleted] FROM dbo.[table1]
    WHERE [qId] = 1 AND [cId] = 2) source
    ON (target.[qId] = source.[qId] AND target.[cId] = source.[cId])
WHEN MATCHED THEN
    UPDATE SET target.[deleted] = 0
WHEN NOT MATCHED BY TARGET THEN
    INSERT ([qId], [cId]) VALUES (1, 2);

当[table1]中存在[qId]=1和[cId]=2组合时,将执行更新,但当组合不存在时,不会进行插入。

源子查询中[qId]=1和[cId]=2的WHERE子句是一个绝对筛选器-更新将只看到传递该谓词的行。是,更新不是问题所在,它工作正常。问题是插入永远不会开火,而且不会;曾经因为我上面描述的WHERE子句。我在上面键入了UPDATE,但意思是MERGE。如果A中不存在x,如果A中存在x,则将x添加到A。您需要将源查询替换为SELECT 1 qId,最基本的是2 cId source。这就意味着,如果x在A中不存在,那么将x添加到AMakes sense中。非常感谢。