Mysql
 sql >> база данни >  >> RDS >> Mysql

Актуализирайте колона с индекс за сортиране, за да преместите елементи

Трябва да можете да направите това в една заявка:нещо подобно на UPDATE foo SET sort_index = sort_index + 1 WHERE bar_id == b AND sort_index < s1 AND sort_index >= s2 , където b е bar_id от реда за преместване, s1 е текущият sort_index от този ред и s2 е sort_index искате да го преместите. След това трябва просто да промените sort_index от реда.

Вероятно бихте искали да направите двете заявки в транзакция. Освен това може да ускорите нещата, ако създадете индекс на sort_index използвайки нещо като CREATE INDEX foo_index ON foo (sort_index) .

(Между другото, тук предполагам, че не искате дублиране на sort_index стойности в рамките на даден bar_id и че относителният ред на редовете никога не трябва да се променя, освен изрично. Ако нямате нужда от това, решението е още по-просто.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. yii релация за множество външни ключове в колона

  2. Какви са ползите от използването на миграции и моделни класове в Laravel?

  3. Вмъкването на стойност NOW() в тип данни за дата и час връща 0000-00-00 00:00:00

  4. MYSQL Създаване на таблица със стойност (израз) по подразбиране към колона

  5. Групиране по период от време на интервал от седмици/месеци