Подтвердить что ты не робот

Запрос mysql для обновления поля до max (поле) + 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

4b9b3361

Ответ 1

Попробуйте

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)

Ответ 2

Чтобы обойти 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)