[55]
13 Янв 2012, 12:37

Вложенный запрос SELECT в Update

Привет!

Помогите мне со вложенным запросом. Нужно сделать вложенный запрос в update, который возвращал значение. И на это значение нужно делать обновление.

UPDATE `table` SET  `id_table` =  (SELECT MAX(id_table)+1 FROM `table`) WHERE `id_table` = '1'

Смысл запрос, в том что мне нужно узнать максимальное значение id_table в таблице и прибавить к нему один. А потом обновить первый элемент в таблице на это значение.

Он мне показывает ошибку.
#1093 — You can’t specify target table ‘table’ for update in FROM clause

#mysql

Комментарии (2)
grom
13 Янв 2012, 18:32
#

Вы пытаетесь найти в таблице которую обновляете. Нужно в начале найти, а потом обновлять.

UPDATE  `table`, (SELECT MAX(id_table)+1 as id FROM `table`) as tbl SET `id_table` = tbl.id WHERE `id_table` = '1'

Проверял, работает.

nistelroi
26 Апр 2014, 23:02
#

Есть ещё одно решение. Сделать внутренний подзапрос SELECT FROM SELECT, тогда для него будет использоваться временная таблица и блокировки обновляемой таблицы не будет.

Добавить комментарий

Войдите, чтобы написать о чем-нибудь...
Вход Регистрация
Web.onRails
Здесь вы можете спросить или написать обо всём, что касается Веб-разработки.
написать о чем-нибудь...
Метки: