@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"
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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