Я выполнил следующий запрос, в котором должно было быть предложение where, но я забыл его добавить:
UPDATE
tblFormElementInstances as fei
JOIN
tblFormElements as fe using(intFormElementId)
SET
fei.intStep = 1
AND
fei.intDivisionId = 1 OR fei.intDivisionId IS NULL);
MySQL вернул следующее сообщение:
--Запрос выполнен успешно, затронуто 42 строки (0,06 с)
--Совпало строк: 94 Изменено: 42 Предупреждения: 0
Я ожидал, что он выдаст синтаксическую ошибку, но этого не произошло. Кроме того, в этой таблице есть 96 строк с разными intDivisionIds (т. е. не только 1 или NULL), что предполагает, что MySQL выполнил некоторую фильтрацию (совпадающих строк = 94).
Кроме того, intStep фактически был изменен на 0, а не на 1.
Кто-нибудь знает:
1) Почему этот запрос вообще сработал?
2) Почему он изменил intStep на 0, а не на 1?
3) Почему он не совпал со всеми 96?
(Измененное количество 42 связано с тем, что в некоторых строках уже было intStep = 1.)