Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Generieren Sie eine Aktualisierungs-SQL zum Ändern der Reihenfolge eines Artikels?

Sie brauchen nicht einmal die ID Parameter.

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
  • Alles oberhalb oder unterhalb der ursprünglichen und neuen Positionen muss nicht geändert werden.
  • Alles andere bewegt sich um eins nach oben oder unten.
  • Außer dem ursprünglichen Element, das an die neue Position verschoben wird.