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

Générer un SQL de mise à jour pour modifier l'ordre d'un article ?

Vous n'avez même pas besoin de l'ID paramètre.

UPDATE
  yourTable
SET
  Order = (CASE WHEN     Order = @oldOrder THEN @newOrder
                WHEN @newOrder > @oldOrder THEN Order - 1
                                           ELSE Order + 1 END)
WHERE
     Order BETWEEN @oldOrder AND @newOrder
  OR Order BETWEEN @newOrder AND @oldOrder
  • Tout ce qui se trouve au-dessus ou en dessous des positions d'origine et nouvelle n'a pas besoin d'être modifié.
  • Tout le reste se déplace vers le haut ou vers le bas.
  • Sauf l'élément d'origine, qui se déplace vers la nouvelle position.