mysql更新和运算符

jmp7cifd  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(273)

我为sql查询编写了一些错误的语法。但是,它仍然没有在javatomcat服务器上输出错误。在Debian9上运行。mysql版本:

mysql  Ver 14.14 Distrib 5.7.24, for Linux (x86_64)

查询如下,我把逗号“,”with“和”放错了set运算符后面

UPDATE table_pod_print set print_status = 1 and operator_id = 2091 where id = 1

我试着在控制台上运行它,结果是:

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

请帮助我理解为什么查询首先起作用。

inkz8wg9

inkz8wg91#

在mysql中 SELECT 1 AND 0; 生产 0 因为and运算符将操作数计算为逻辑and。看看你的问题 SET print_status 评估为(为清楚起见,添加了额外的括号):

print_status = (1 AND (operator_id = 2091))

也就是说 1 AND 1 如果 operator_id = 2091 用于更新 id = 1 争吵是真的 1 AND 0 如果没有。

相关问题