@AlikDex

Как обновить id сохраняя порядок?

В скрипт приходит порядок айдишников, например: 4,2,5,8,7,3
Надо обновить колонку "позиция по возрастающией согласно порядку.
что-то типа:
SET @a = 0;
UPDATE `my_table` SET `order` = @a = @a + 1 WHERE `id` IN (4,2,5,8,7,3);

Проблема в том, что оптимизатор сначала сортирует айдишники, а потом начинает апдейтить. Вот что можно придумать такого, чтоб работало?
  • Вопрос задан
  • 284 просмотра
Пригласить эксперта
Ответы на вопрос 2
sanchezzzhak
@sanchezzzhak
Ля ля ля...
SET @a = 0;
UPDATE `my_table` SET `order` = @a = @a + 1 
WHERE 
`id` IN (4,2,5,8,7,3) 
ORDER BY IF(FIELD(id, 4,2,5,8,7,3)=0,1,0) DESC, FIELD(id,4,2,5,8,7,3)

Не уверен но при выборке работает
Ответ написан
@dmitryKovalskiy
программист средней руки
Очень не эффективно, но можно попробовать применить курсор. Гуглить "cursor mysql"
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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