MySQL как сделать update с вложенным запросом?

Задача: Уменьшить цены книг на 20 процентов того автора, суммарная стоимость всех экземпляров книг которого максимальна (не стоимость всех книг на складе, а стоимость всех уникальных книг автора ).

таблица book выглядит так:

введите сюда описание изображения

Как я пытался сделать:

UPDATE book SET price = price * 0.8 WHERE book.author_id = (SELECT author_id FROM book GROUP BY author_id HAVING SUM(price) >= ALL(SELECT SUM(price) FROM book GROUP BY author_id));

но этот запрос выдает ошибку: ERROR 1093: You can't specify target table 'book' for update in FROM clause

Как переписать запрос?


Ответы (1 шт):

Автор решения: Akina
UPDATE book
NATURAL JOIN ( SELECT author_id
               FROM book
               GROUP BY 1
               ORDER BY SUM(price) DESC LIMIT 1 ) expensive 
SET price = price * 0.8;

И будь готов ответить преподавателю на вопрос "как изменится запрос, если добавить ещё одну запись ..." (в общем, то, на что я указал в комментарии).

→ Ссылка