小编典典

如何在具有数据的表上创建序号列索引

sql

我的下表有10个唯一的行,BookingID是包含随机数的FK。该数字不必按顺序排列。

BookingID, Description
1000       Foo
3000       Bar
1500       Zoo

我需要插入一个名为ID的顺序索引,该索引从1..x开始

如何在SQL Server 2005中做到这一点?我当时想写一个游标,x = x + 1,但是也许有更好的方法吗?

这是我想要的结果

Id, BookingID, Description
1   1000       Foo
2   3000       Bar
3   1500       Zoo

阅读 176

收藏
2021-04-28

共1个答案

小编典典

这:

SELECT ROW_NUMBER() OVER(ORDER BY t.bookingid) AS id,
       t.bookingid,
       t.description
  FROM YOUR_TABLE t

…将产生:

id  bookingid   description
----------------------------
1   1000        Foo
2   3000        Bar
3   1500        Zoo

要更新现有id列,请使用:

WITH cte AS (
   SELECT t.id,
          ROW_NUMBER() OVER(ORDER BY t.bookingid) AS rank,
          t.bookingid,
          t.description
     FROM YOUR_TABLE t)
UPDATE cte
   SET id = rank
2021-04-28