我今天有一个同事写了一个不正确编写的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
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我认为它最多会更新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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
548 次 |
| 最近记录: |