Вот простая таблица и тестовые данные, которые я буду использовать для демонстрации своей проблемы:
create table foo(
id INTEGER AUTO_INCREMENT PRIMARY KEY,
orderpos int not null
);
insert into foo (orderpos) values (1);
insert into foo (orderpos) values (2);
insert into foo (orderpos) values (3);
insert into foo (orderpos) values (4);
insert into foo (orderpos) values (5);
Я хотел бы обновить некоторые поля с помощью запроса, подобного следующему:
update foo
set orderpos =
CAST(
CASE
WHEN id = 2 THEN 4
WHEN id = 3 THEN 8
END
AS INTEGER
)
where id in(2, 3);
Однако я получаю сообщение об ошибке
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTEGER
)
where id in(2, 3)'
Я понимаю, что при удалении запроса CAST будет работать, но я хотел бы понять, почему эта операция не разрешена?
MySQL составляет 5,6 Вот ссылка на скрипку http://sqlfiddle.com/#! 9 / 420d7f