Странное поведение mysql при update для нескольких условиях в set. Так и должно быть?

Запрос
UPDATE test_table
			SET 
				A = IF( A >= B, A - B, A),
				C = IF( A >= B, C + 1, C)
			WHERE  D = 1


Во втором условии значение А берется уже измененное с учётом первого условия? То есть, если сработает первый раз A >= B, оно уже не сработает во второй. Почему так получается ? ведь как бы запроса ещё не было. Движок innodb.
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
0xD34F
@0xD34F
Говорят, что так и должно быть. В MySQL. Что вообще говоря, является нестандартным поведением.

The second assignment in the following statement sets col2 to the current (updated) col1 value, not the original col1 value. The result is that col1 and col2 have the same value. This behavior differs from standard SQL.

UPDATE t1 SET col1 = col1 + 1, col2 = col1;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы