MySQL: Забавные находки UPDATE+ORDER

logo-mysql-110x57 Вот уж не думал что в операторе UPDATE можно использовать ключевое слово ORDER. И никогда не думал, что такое мне пригодится!

Вот пример. Мне нужно сделать такой запрос:

UPDATE t SET id = id + 1;

Как ни странно запрос вызовет ошибку уникальности первичного ключа. Проблема в том, что апдейт делается последовательно для всех записей, а не сразу всех.

Вылечить проблему можно задав порядок апдейта с помощью ключевого слова ORDER.

UPDATE t SET id = id + 1 ORDER BY id DESC;

Дьявольски редко пригождающаяся вещь! Но иногда и палка стреляет.

MySQL: Забавные находки UPDATE+ORDER: 3 комментария

  1. soulfly

    Где же Вы были пару недель назад? Я использовал обходное решение:

    updade t set id=id+10000;
    update t set id=id-9999;

Комментарии запрещены.