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

如何在MySQL中实现deleted字段0和1值的切换更新?

解决MySQL中翻转0/1字段的UPDATE语句问题

嗨,这个需求在MySQL里其实有好几种简洁的实现方式,我给你整理了几个最常用的方案:

  • 算术运算(最简洁)
    因为你的deleted字段只有0和1两个取值,直接用1 - deleted就能实现翻转逻辑,代码如下:

    UPDATE posts SET deleted = 1 - deleted;
    

    原理很简单:如果当前值是0,计算后就是1;如果当前是1,计算后就是0,完美匹配你的需求。

  • CASE WHEN语句(可读性最强)
    如果你希望逻辑更直观,方便后续维护时一眼看懂,可以用CASE WHEN明确写出判断逻辑:

    UPDATE posts SET deleted = CASE WHEN deleted = 0 THEN 1 ELSE 0 END;
    

    这种写法把“如果当前是0就设为1,反之设为0”的逻辑直接翻译成了SQL,非常清晰。

  • 位运算(巧妙的技巧)
    利用异或(XOR)运算的特性:0和1异或结果是1,1和1异或结果是0,也能实现翻转:

    UPDATE posts SET deleted = deleted XOR 1;
    

    这个写法比较巧妙,适合熟悉位运算的开发者使用。

注意:如果不需要更新全表的deleted字段,一定要加上WHERE子句来指定目标行,比如UPDATE posts SET deleted = 1 - deleted WHERE id = 123;,避免误操作全表数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:16:06