Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Генериране на актуализиран SQL за промяна на реда на елемент?

Дори не се нуждаете от ID параметър.

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
  • Всичко над или под оригиналните и новите позиции не трябва да се променя.
  • Всичко останало се движи с единица нагоре или надолу.
  • С изключение на оригиналния елемент, който се премества на новата позиция.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на OUTPUT след INSERT за получаване на стойност на колона за идентичност в променлива (нетаблична стойност)

  2. Важна промяна в разширените събития в SQL Server 2012

  3. Как да получите всички деца на родител и след това техните деца с помощта на рекурсия в заявката

  4. Достъпът е отказан при вмъкване на файл в Sql Server 2012 FileTable с помощта на File.CreateFile в уебсайта на ASP.NET

  5. Месеци между две дати