mysql update where select from update-target
MySQL не позволяет апдейтить таблицу, которая участвует в выборке условия select. То есть при попытке выполнить запрос типа
update categories set discount = (select discount from categories where id=1)
Получим следующее сообщение об ошибке:
ERROR 1093 (HY000): You can't specify target table 'goods' for update in FROM clause
В документации по UPDATE находим простое объяснение - “Currently, you cannot update a table and select from the same table in a subquery.”
Как быть, если всё же требуется изменить записи в таблице, которая участвует в условии?
Конечно, вариант с ручным созданием временной таблицы будет работать, однако…
Статья на английском с примерами, а также интересные решения в комментариях по ссылке:
http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-mysql/
update webartCategories as cat inner join ( [тут наш запрос на выборку] ) as x on cat.id = x.id set level = level + 1
UPD - Ещё один запрос с подзапросом - UPDATE SELECT MIN MAX
upate user u inner join
(SELECT id_user, max(id_post) as maxid_post from post2user GROUP BY id_user) u2p
set u.lastpost = u2p.maxid_post
Метки: mysql
Что ты несешь Лёвик