有条件更新sql查询错误

发布于 2024-11-07 04:21:53 字数 265 浏览 0 评论 0原文

update contentpagenav
set active = case
                when active = 0 then active = 1
                when active = 1 then active = 0
         end

我收到以下错误

消息 102,级别 15,状态 1,第 3 行 “=”附近的语法不正确。

update contentpagenav
set active = case
                when active = 0 then active = 1
                when active = 1 then active = 0
         end

I get the following error

Msg 102, Level 15, State 1, Line 3
Incorrect syntax near '='.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回眸一笑 2024-11-14 04:21:53

无需在您的 then 中重新分配 active,“set active =”就是这样做的。

   update contentpagenav
       set active =   case
                when active = 0 then 1
                when active = 1 then 0
                    end

No need to re-assign active in your then, the "set active =" is doing that.

   update contentpagenav
       set active =   case
                when active = 0 then 1
                when active = 1 then 0
                    end
音栖息无 2024-11-14 04:21:53

最简单的方法不是使用案例:

UPDATE contentpagenav SET active = 1-active;

如果您要简化问题(出于某种原因需要使用案例):

UPDATE contentpagenav SET active = CASE active
     WHEN 1 THEN 0 
     ELSE THEN 1
END;

如果活动的可能值超过 2 个:

UPDATE contentpagenav SET active = CASE active
     WHEN 1 THEN 0
     WHEN 0 THEN 1
     WHEN 2 THEN ...
     ELSE ...
END;

The easist way to do this is not with a case:

UPDATE contentpagenav SET active = 1-active;

If you're simplifying your question (you NEED to use CASE for some reason):

UPDATE contentpagenav SET active = CASE active
     WHEN 1 THEN 0 
     ELSE THEN 1
END;

If more than 2 possible values for active:

UPDATE contentpagenav SET active = CASE active
     WHEN 1 THEN 0
     WHEN 0 THEN 1
     WHEN 2 THEN ...
     ELSE ...
END;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文