SQL 更新语法以自动重新排列数字

SQL UPDATE syntax to auto rearrange number

我有一个非常快速的问题。我有一系列订单,其中每个订单都可以有优先权。优先级可以是 NULLINT。时不时想把优先级从1开始往后排。

例如:

NULL, NULL, 5, NULL, 7, NULL, NULL, 15

改为

NULL, NULL, 1, NULL, 2, NULL, NULL, 3

最有效的 SQL UPDATE 语法是什么?任何的想法?我找不到一个好的方法来存档这个,只能使用游标。

干杯, 山姆

编辑 - 根据 Giorgos Betsos 的要求

架构(针对问题进行了简化)

CREATE TABLE [dbo].[tblOrder]
(
    [OrderId] [int] NOT NULL,
    [Priority] [int] NULL,

    CONSTRAINT [PK_tblOrder] 
        PRIMARY KEY ([OrderId] ASC)
)

示例输出

Order Id | Priority
---------+---------
12343    |  NULL
12344    |  NULL
        ...
        ...
        ...
12449    |  5
12450    |  NULL
12451    |  7
        ...
        ...
        ...
12900    |  NULL
12901    |  NULL
12902    |  15

谢谢!

经过澄清,您可以使用的查询类似于:

;WITH ToUpdate AS (
   SELECT Priority,
          ROW_NUMBER() OVER (ORDER BY Orderid) AS rn
   FROM tblOrder
   WHERE Priority IS NOT NULL
)
UPDATE ToUpdate
SET Priority = rn