Увеличенные (не автоматически увеличивающиеся) значения столбца обновления MySQL

У меня есть таблица с 4 столбцами, один из которых называется «порядок». «Порядок» не увеличивается автоматически, но автоматически увеличивается другой столбец, «mapping_id». Другие столбцы включают «quiz_id» и «question_id».

Изображение структуры таблицы

Я хочу изменить все значения «порядка», чтобы они шли в том же порядке возрастания, что и поле question_id. Мое приложение сортирует только на основе этого столбца «порядок», поэтому единственный способ пересортировать — изменить значения в этом столбце.

Я хочу знать, как написать запрос на обновление, чтобы изменить все значения «порядка», чтобы они шли в порядке возрастания. Я думал просто сопоставить значение "order" со значением "question_id", но question_id начинается с 2 вместо 1, а "order" должен начинаться с 1. Спасибо за любую помощь, которую вы можете предоставить!


person Josh KG    schedule 18.10.2013    source источник


Ответы (2)


Что-то вроде следующего может сделать то, что вы ищете. Он будет назначать возрастающие значения для order на основе порядка question_id:

select @ordval := 0;
update thetable set `order` = 
        (select @ordval := @ordval + 1) order by question_id;
person Mark Wilkins    schedule 18.10.2013

Вы можете установить order = question_id -1 . Таким образом, он начнется с 1. Вы можете получить некоторые дыры в любом случае, если у вас есть дыры в question_id, но если у вас нет дыр, это поможет.

UPDATE yourTable
SET `order` = question_id - 1
person Filipe Silva    schedule 18.10.2013