@urajo

Как сместить значение поля position на +1?

В базе допустим 10 записей, я хочу запись с 10 id поставить под 5 id, т.е 10 записи присвоить id - 6, а все остальные сдвинуть на +1. Т.е 6 запись станет 7 и т.д.
Как такое сделать?
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
CREATE PROCEDURE move_rows ( IN position_move_from INT,
                             IN position_move_to INT )
UPDATE test 
SET pos = CASE WHEN id = position_move_to
               THEN position_move_from
               ELSE pos + SIGN(position_move_to - position_move_from)
               END
WHERE id BETWEEN LEAST(position_move_from, position_move_to)
             AND GREATEST(position_move_from, position_move_to)
ORDER BY id = position_move_to;


DEMO fiddle
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
UPDATE table SET `order` = `order` + 1 WHERE `order` > 7
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы