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

MySQL中SET后加AND为何不触发语法错误?

关于MySQL UPDATE语句中SET后使用AND的问题

你看到的这条语句:

UPDATE mytable  
SET deleted = 1 
AND name  = 'Cindy'

MySQL并没有忽略AND,而是把它当成逻辑运算符来处理了——这是合法语法,但基本都是无意的错误写法。

实际执行逻辑

这条语句等价于:

UPDATE mytable
SET deleted = (1 AND (name = 'Cindy'))

在MySQL里,布尔值true用1表示,false用0表示:

  • 当记录的name等于'Cindy'时,name = 'Cindy'结果为1,1 AND 1等于1,deleted会被设为1
  • 当name不等于'Cindy'时,name = 'Cindy'结果为0,1 AND 0等于0,deleted会被设为0

是否有实际用途?

这种写法几乎没有合理的实际场景,正常更新多个字段应该用逗号分隔,比如:

UPDATE mytable  
SET deleted = 1,
    name = 'Cindy'

如果你的测试数据里所有记录的name都是'Cindy',确实会看到deleted全被设为1,看起来和预期结果一致,但这只是巧合,换一批数据就会暴露逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:45:46