如何使用数据在表上创建序列号列索引

时间:2010-10-21 00:07:46

标签: sql sql-server sql-server-2005 tsql migration

我有下表有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

2 个答案:

答案 0 :(得分:6)

此:

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

答案 1 :(得分:0)

更好地改变表ADN添加身份列

ALTER TABLE TABLENAME添加SRNO IDENTITY(1,1)