Mysql
 sql >> Base de données >  >> RDS >> Mysql

Maintenir/mettre à jour l'ordre des enregistrements dans mysql

Est-ce que quelque chose comme ça le ferait ?

UPDATE items 
SET position = CASE position 
  WHEN $oldpos THEN $newpos 
  ELSE position + SIGN($oldpos-$newpos)
 END
WHERE position BETWEEN LEAST( $newpos, $oldpos ) 
                AND GREATEST( $newpos, $oldpos );

Je l'ai testé plusieurs fois et cela semble fonctionner.