У меня был сотрудник сегодня написать неправильно написанное 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 строку с уникальным идентификатором. и 2402 и 2403 .... и т. д. не сопоставляются ни с чем.
Он обновил каждую строку таблицы, поскольку MySQL интерпретировал каждый идентификатор из 2402 как истинный. 'где ID = 2401 ИЛИ Истина ИЛИ Истина ИЛИ Истина ИЛИ Истина;' –
Добро пожаловать в чудесный мир MySQL, который вместо отказа от неправильного SQL пытается угадать, что вы хотели сделать своей жизнью проще. Я считаю, что это ошибка в MySQL - синтаксис SQL явно неправильный и не должен работать в первую очередь. –