今天我有一个同事写了一个不正确的 SQL 更新。
UPDATE table SET column = 'change'
WHERE id = 2401 OR 2402 OR 2403 OR 2404 OR 2405 OR 2406;
Query OK, 264 rows affected (0.03 sec)
Rows matched: 9997 Changed: 264 Warnings: 0
为什么会这样?
我认为它最多会更新 1 行 ID 是唯一的。和 2402 和 2403 ....等等不匹配任何东西。
最佳答案
发生的事情是 OR 2402
被视为真值,就好像您将 1 = 1
或其他始终返回真值的条件一样。您的查询被 MySQL 读取为
UPDATE table SET column = 'change'
WHERE id = 2401 OR true OR true OR true OR true OR true;
关于mysql - 这个更新声明是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15442177/