mysql update and更新有问题,为什么mysql不报语法错误

update a set name = '123' and age = 20

mysql的这个更新语句有问题,没什么疑问,我的疑问是为什么mysql不报语法错误?

阅读 2.5k
1 个回答

因为语法没问题,MySQL 会按照运算符优先级来解析这条语句,实际是:

UPDATE `a` SET `name` = ('123' AND `age` = 20);

赋值语句结果为 true,一个非空的字符串转为 Boolean 也为 true,两个 true逻辑和运算,结果还是 true

所以你这条语句实际上等效于:

UPDATE `a` SET `name` = true;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题