sql >> Database >  >> RDS >> Sqlserver

Een update-SQL genereren voor het wijzigen van de volgorde van een item?

Je hebt niet eens de ID nodig 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 boven of onder de oorspronkelijke en nieuwe posities hoeft niet te worden gewijzigd.
  • Al het andere gaat één omhoog of omlaag.
  • Behalve het originele item, dat naar de nieuwe positie wordt verplaatst.



  1. Hoe kan ik een rij in een tabel BIJWERKEN of INVOEREN als deze niet bestaat?

  2. gegevens van het laatste 4 kwartaal

  3. Geparametriseerde query's in PHP met MySQL-verbinding

  4. Hoe tijdgegevens uit een tekenreeks in SQL Server te extraheren of om te zetten?