更新“顺序”列,增加数字(取决于 ID 列)



我正在使用SQL Server 2008。

现在我有如下描述的场景:

  • 1 个表,包含 3 列:ID、名称、顺序。
  • 他们有 8 条记录。
  • 5 条记录具有相同的数据:ID='1',名称='AAA'
  • 3 条记录具有相同的数据:ID='2',名称='BBB'

现在我想为每个ID,名称更新数字递增(从1开始)的订单列:

    No  Name    Order
1   AAA 1
1   AAA 2
1   AAA 3
1   AAA 4
1   AAA 5
2   BBB 1
2   BBB 2
2   BBB 3

如何在不使用游标的情况下获得此结果?

我非常感谢您的帮助。

谢谢。

您可以尝试以下操作。 我使用 CTE 驱动更新语句

WITH data AS
(
    SELECT Order
           , ROW_NUMBER() OVER (PARTITION BY ID, NAME 
                                ORDER BY ID, NAME) AS Seq
      FROM TableA
)
UPDATE data
   SET Order = Seq

将表 A 替换为表名称

最新更新