ORDER BY с запросом UPDATE [дубликаты]

0

Я хотел бы обновить поле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 создает проблему, но я бы хотел избежать использования отдельного запроса для их установки.

  • 0
    Посмотрите на stackoverflow.com/a/9080506/3179169 для использования или UPDATE и ORDER BY.
  • 0
    Почему вы не хотите использовать отдельный запрос? Это легко решит проблему.
Показать ещё 1 комментарий
Теги:
sql-update
sql-order-by

1 ответ

0

Все обновления SQL являются атомарными, поэтому вы обновляете все или ничего, и порядок не имеет никакого значения, но я думаю, что я понял, что вы пытаетесь сделать, поскольку для этого вам понадобится многократное обновление или пробежать курсор

  • 0
    Я понимаю, что буду обновлять все, но порядок здесь есть разница. Я бы хотел, чтобы данные field1 получали самые низкие числа из переменных, начиная с самых маленьких. Также курсоры, как правило, медленные, и в моем случае это излишнее
  • 0
    Да, это то, что я понял тогда, вы можете использовать курсор для этого и бегать по вашей таблице один за другим. и поставить порядок объявления курсора

Ещё вопросы

Сообщество Overcoder
Наверх
Меню