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

MySQL如何用单条UPDATE语句实现多WHERE条件下同列更新

问题答案

可以用单条UPDATE语句实现需求,借助CASE条件表达式即可完成不同规则的赋值,语法如下:

UPDATE 表名
SET recent = CASE
    WHEN ID = 555 THEN 1
    ELSE 0
END;

上述语句会将ID为555的行recent字段设为1,其余所有行的recent字段统一设为0,完全匹配你先全局重置为FALSE、再给指定行设为TRUE的业务逻辑,天然保证全局只有一行recent为TRUE的约束。

如果你的表数据量较大,想要优化更新性能,可以额外增加WHERE条件,仅处理需要变更的行,避免无意义的全表更新:

UPDATE 表名
SET recent = CASE
    WHEN ID = 555 THEN 1
    ELSE 0
END
WHERE recent = 1 OR ID = 555;

增加WHERE条件后,语句只会更新原本recent值为1的行,以及目标ID为555的行,执行效率更高,最终效果和全表更新完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:45:02