我试图通过sql脚本检查记录存在的某些条件来将记录添加到表中。我正在尝试使用Merge Statement。它不起作用不能解决我出错的地方。有人可以帮我弄这个吗?。感谢
MERGE Categories As target
USING (
SELECT CategoryKey
From Categories where CategoryName = 'TestName'
) AS source on (source.CategoryKey = target.CategoryKey)
WHEN Not Matched THEN
INSERT VALUES ('TestName');
答案 0 :(得分:2)
这将完成工作:
MERGE Categories As target
USING (SELECT 'TestName' AS CategoryName) AS source
ON (source.CategoryName = target.CategoryName)
WHEN NOT MATCHED THEN
INSERT (CategoryName) VALUES ('TestName');
答案 1 :(得分:2)
你到底想要完成什么?
我问,因为你使用的是与目标相同的表和源,因为你正在比较我认为是主键的CategoryKey,WHEN Not Matched
条件永远不会被评估,因为如果你有ID为1,2和3的表,并与ID = ID的自身进行比较,所有行都将计算为true。
尝试将WHEN Not Matched THEN
更改为WHEN Matched then UPDATE
并编写一个简单的测试更新,您可以看到我正在谈论的行为
EDIT 试试这个(假设你的ID是自动递增的)
MERGE Categories As target
USING (
SELECT CategoryKey
From Categories where CategoryName = 'TestName'
) AS source on (source.CategoryName = target.CategoryName)
WHEN Not Matched THEN
INSERT VALUES ('TestName');