sql >> Databáze >  >> RDS >> Sqlserver

Vygenerovat aktualizaci SQL pro změnu pořadí položky?

Nepotřebujete ani ID parametr.

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
  • Cokoli nad nebo pod původní a novou pozicí není třeba měnit.
  • Vše ostatní se posouvá nahoru nebo dolů.
  • Kromě původní položky, která se přesune na novou pozici.



  1. Získání skupiny podle součtu a celkového součtu v jednom dotazu

  2. php pdo emulate_prepares false stringify_fetches false int still string

  3. Zjistěte, zda je objekt uživatelsky definovanou tabulkou na serveru SQL pomocí OBJECTPROPERTY()

  4. Jak resetovat sekvenci pro ID v tabulkách PostgreSQL