You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条SQL语句实现同一表内激活行状态切换更新

用单条UPDATE语句实现需求

可以通过CASE表达式在单次更新中完成状态切换,针对SpecID = @SpecID的行统一处理:

UPDATE SpecialTBL
SET Active = CASE
    WHEN Active = 1 THEN 0
    WHEN Active = 0 THEN 1
END
WHERE SpecID = @SpecID;

如果你的实际需求是仅将某一特定行设为激活状态(Active=1),同时将同SpecID下原激活的行置为非激活(而非反转所有同SpecID行的状态),需要补充目标行的唯一标识(比如主键RowID),示例如下:

UPDATE SpecialTBL
SET Active = CASE
    WHEN RowID = @TargetRowID THEN 1
    ELSE 0
END
WHERE SpecID = @SpecID;

这种写法不仅合并了操作,还能避免两条语句分开执行可能出现的事务不一致问题。

内容的提问来源于stack exchange,提问作者GrapeBoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:42:38