То, что я хочу сделать:
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
Попробуйте
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)
Чтобы обойти 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)