请帮我解决此查询的语法。它不编译。它说关键字END附近有语法错误。
显然,我已经将这些BEGIN和ENDS混淆了。
我正在使用Microsoft SQL Server 2008 R2。我不确定这些BEGIN
S和END
s的语法。
请注意条件1 = 0
。这是稍后将用适当的谓词替换的东西。
IF EXISTS (SELECT * FROM StringCategory WHERE ResourceKeyId = 18134 AND CategoryId = 0)
BEGIN
UPDATE StringCategory
SET CategoryId = 0
WHERE ResourceKeyId = 18134
END
ELSE
BEGIN
IF 1 = 0
BEGIN
DELETE FROM StringCategory WHERE ResourceKeyId = 18134
END
ELSE
BEGIN
INSERT INTO StringCategory
VALUES(18134, 0)
END
END
END
答案 0 :(得分:3)
你的最后一个END是额外的。您可以将C#中的{和}等BEGIN和END视为IF构造(它们用于标记要在IF / ELSE语句中执行的块的开头和结尾)。
答案 1 :(得分:0)
这是一种更简单的方法来执行您的尝试。
insert into StringCategory
(ResourceKey, CategoryId)
select 18134, 0
where not exists (
SELECT *
FROM StringCategory
WHERE ResourceKeyId = 18134
AND CategoryId = 0)