Проблема с Update запросом Mysql
Использую СУБД MYSQL. Текст ошибки : You can't specify target table 'book' for update in FROM clause Подскажите как нужно переписать запрос чтобы заработало
Мой запрос : UPDATE book SET price = price * 0.95 WHERE amount = (SELECT MAX(amount) FROM book)
Ответы (1 шт):
Автор решения: Mike
→ Ссылка
В MySQL нельзя изменять таблицу, которая непосредственно участвует в фразе where. Необходимо использовать синтаксис update с join с подзапросом, который собственно получает значение:
UPDATE book n
JOIN (SELECT MAX(amount) amount FROM book) b ON n.amount=b.amount
SET price = price * 0.95
Если же вы точно уверены, что значение с максимальным amount в таблице только одно, можно применить более простой способ:
UPDATE book SET price = price * 0.95
ORDER BY amount desc LIMIT 1