update a set name = '123' and age = 20
mysql的这个更新语句有问题,没什么疑问,我的疑问是为什么mysql不报语法错误?
因为语法没问题,MySQL 会按照运算符优先级来解析这条语句,实际是:
UPDATE `a` SET `name` = ('123' AND `age` = 20);
赋值语句结果为 true,一个非空的字符串转为 Boolean 也为 true,两个 true 做逻辑和运算,结果还是 true。
true
所以你这条语句实际上等效于:
UPDATE `a` SET `name` = true;
2.1m questions
2.1m answers
60 comments
57.0k users