我在一个生产mysql数据库上执行更新,令我惊讶的是,由于一个糟糕的where子句,我更新了整个表。
我的查询如下所示:
update users where userid-123
我没有使用等号,而是使用了短划线字符,整个表都被更新了。
这到底是为什么要运行呢?这难道不应该是一个错误吗?
我猜mysql将其翻译为:
update users where true
发布于 2017-09-27 14:11:26
根据the documentation的说法
MySQL会将任何非零、非空值计算为TRUE。
这里发生的情况是,userid-123
导致了减法操作,对于userid
不是NULL和123的所有行,减法操作的结果都将被解释为true。
https://stackoverflow.com/questions/46449692
复制相似问题