mysql запрашивают для обновления поля к макс. (поле) + 1

То, что я хочу сделать:

UPDATE table SET field = MAX(field) + 1 WHERE id IN (1, 3, 5, 6, 8);

Семантика этого оператора, в моем уме, была бы первой, база данных уйдет и определит для меня что самое большое значение field находится во всем из table. Это затем добавило бы 1 к тому значению и присвоило бы получающееся значение field столбец строк с id 1, 3, 5, 6, и 8. Кажется достаточно простым...

Когда я пытаюсь выполнить тот запрос, хотя, дроссели MySQL на нем и говорит:

ERROR 1111 (HY000): Invalid use of group function

Каков секретный соус, который необходимо использовать для получения результата, которого я требую?

С уважением, Vic

12
задан OMG Ponies 26 July 2010 в 03:36
поделиться

2 ответа

Попробуйте

UPDATE TABLE set field = ((SELECT selected_value FROM (SELECT MAX(field) AS selected_value FROM table) AS sub_selected_value) + 1) WHERE id in (1,3,5,6,8)
22
ответ дан 2 December 2019 в 05:14
поделиться

Чтобы обойти mysql-error-1093, используйте подзапрос/производную таблицу/инлайн представление:

UPDATE table
      SET field = (SELECT x.max_field
                          FROM (SELECT MAX(t.field) + 1 AS max_field
                                        FROM TABLE t
                                       WHERE t.id IN (1,3,5,6,8) ) x)
7
ответ дан 2 December 2019 в 05:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: