Я хотел бы обновить поле1 в следующем запросе с определенным порядком. Как в начале обновления от меньшего номера до самого большого. (упрощенные названия)
UPDATE table t1, (SELECT @temp := 0) a, (SELECT @temp_2 := 0) b
SET field1 = (CASE
WHEN id = X THEN (@temp := @temp+1)
WHEN id = Y THEN (@temp_2 := @temp_2+1)
END)
WHERE ( id = X OR id = Y )
ORDER BY field1 ASC;
Я попытался использовать ORDER BY, но я получил и ошибку Incorrect usage of UPDATE and ORDER BY
.
Я понимаю это , (SELECT @temp := 0) a, (SELECT @temp_2 := 0) b
создает проблему, но я бы хотел избежать использования отдельного запроса для их установки.
Все обновления SQL являются атомарными, поэтому вы обновляете все или ничего, и порядок не имеет никакого значения, но я думаю, что я понял, что вы пытаетесь сделать, поскольку для этого вам понадобится многократное обновление или пробежать курсор