Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Generare un SQL di aggiornamento per modificare l'ordine di un articolo?

Non hai nemmeno bisogno del ID parametro.

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
  • Non è necessario modificare nulla al di sopra o al di sotto delle posizioni originali e nuove.
  • Tutto il resto si sposta in alto o in basso.
  • Tranne l'elemento originale, che si sposta nella nuova posizione.