Проблема с 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
→ Ссылка