我正在尝试编写一个查询,#master12.cg
当它为空时将更新我的表。所以这是我需要的步骤:
1)检查是否
#master12.uid
存在,如果存在#check1.dasboot
,则#master12.cg
使用该值进行更新
2)检查是否#master12.uid
存在,#check.uid
是否#master12.cg
使用中的值进行更新#check2.redbluegreen
3)如果#master12.uid
任一表中都不存在,则保留#master12.uid
为空
我试过这个查询
Update #master12
Set [cg] = case
when exists (Select [dasboot] FROM [#check1] WHERE [#master]. [uid] = [#check1].[uid])
when not exists (Select [redbluegreen] FROM [#check2] WHERE [#master12].[uid] = [#check2].[uid]
else [#master12].[cg]
end
WHERE [#master12].[cg] IS NULL
但是,此查询会出现以下错误:
消息 156,级别 15,状态 1,第 4 行
关键字“when”附近的语法不正确。
消息 156,级别 15,状态 1,第 5 行
关键字“else”附近的语法不正确。
我应该如何编写此更新语句,以便执行上面列出的检查并相应地更新我的表?
SQLServer case when语句不起作用。你需要一个条件,然后是一个结果。您的查询只有一个条件。
你可以这样重写你的查询:
或者也许在一个像:
但这也取决于您在表#check1 和#check2 中都有一个uid 值时您想要什么,以及您希望将哪个值用于更新。
你的案子有问题。语法是