2010-10-21 69 views
3

我有以下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 
+1

你说的意思是 “我需要插入一个名为ID的顺序索引” 是什么。你想添加一个新的列到表中?如果是这样,只需在“identity(1,1)”表中插入一个新列 - 或者该序列是否需要按照BookingID的保证顺序? – 2010-10-21 00:11:26

+0

@Martin在设计器中创建列时,我该怎么做? – Makach 2010-10-21 00:14:16

+0

@ Makach-做什么?我仍然不清楚这个要求。订单重要吗? – 2010-10-21 00:16:55

回答

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 
+0

是的,一个更新语句来编写id值。 – Makach 2010-10-21 00:16:02

+0

小马,是的,它存在并包含每行的空值,但我想用像你说明的序号填充该字段,但是我不能在设置id行后在字段上使用标识。 – Makach 2010-10-21 00:20:44

+0

@Makach:查看更新 – 2010-10-21 00:27:11

0

更好ALTER该表ADN ADD A标识列LIKE

ALTER TABLE TABLENAME地址SRNO IDENTITY(1,1)