Как лучше изменить порядковый номер записи в mysql?

Например, база данных

id|sort|title|
1|1|Вася|
2|2|Коля|
3|3|Даня|
...
...
997|997|Маня|
998|998|Нафаня|
999|999|Петя|
...
...

При выводе список сортируется по столбцу sort.
Теперь мы захотели, чтоб "Петя" выводился вторым.

Я правильно понимаю, что единственный выход - это запросом менять у всех записей порядковый номер, даже если их больше 100 000?

Подскажите оптимальный запрос.
Или, может, есть другая реализация данной идеи (БД еще не создана)?
  • Вопрос задан
  • 3285 просмотров
Пригласить эксперта
Ответы на вопрос 2
morozovdenis
@morozovdenis
надо так делать(изначальный шаг берите любой):
1 | 1024 | record1
2 | 2048 | record2
3 | 4096 | record3


теперь когда хотите переместить первую запись на второе место, то структуру надо поменять так:
1 | 3072 | record1
2 | 2048 | record2
3 | 4096 | record3
таким образом мы поменяли только одну запись

в конце концов через много таких операций у вас получится шаг между записями 1, тогда надо перестроить всю сортировку

P.S. попробуйте в sort хранить double и тогда делить пополам можно очень долго. я не знаю как сортировка по double повлияет на произодительность
Ответ написан
@Cage
UPDATE `table_name` SET `sort` = `sort` + 1 WHERE `sort` >1;
UPDATE `table_name` SET `sort` = 2 WHERE `id` = 999;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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