sql >> Databasteknik >  >> RDS >> Mysql

Uppdatera en sorteringsindexkolumn för att flytta objekt

Du bör kunna göra detta i en enda fråga:något i stil med UPDATE foo SET sort_index = sort_index + 1 WHERE bar_id == b AND sort_index < s1 AND sort_index >= s2 , där b är bar_id för raden som ska flyttas, s1 är det nuvarande sort_index av den raden och s2 är sort_index du vill flytta den till. Sedan skulle du bara ändra sort_index i raden.

Du skulle förmodligen vilja göra de två frågorna i en transaktion. Dessutom kan det påskynda saker och ting om du skapade ett index på sort_index med något som CREATE INDEX foo_index ON foo (sort_index) .

(Förresten, här antar jag att du inte vill ha dubbletter av sort_index värden inom en given bar_id , och att den relativa ordningen för rader aldrig bör ändras utom uttryckligen. Om du inte behöver detta är lösningen ännu enklare.)




  1. SQLite Listview onclick filter db för att öppna resulterar i ny aktivitet

  2. Hur jag tar bort dubbletter från listagg

  3. Databastjänster på AWS och Oracle Cloud Platform

  4. Infoga Dynamic Select Box-värde i Mysql-databasen och visa inlämnat meddelande