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;
推荐问题