Mak*_*ach 3 sql t-sql sql-server migration sql-server-2005
我有下表有10个唯一行,BookingID是一个包含随机数的FK.该数字不需要按顺序排列.
BookingID, Description
1000 Foo
3000 Bar
1500 Zoo
Run Code Online (Sandbox Code Playgroud)
我需要插入一个名为ID的顺序索引,该索引来自1..x
我如何在SQL Server 2005中这样做?我想写一个光标和x = x + 1,但也许有更好的方法?
这是我想要的结果
Id, BookingID, Description
1 1000 Foo
2 3000 Bar
3 1500 Zoo
Run Code Online (Sandbox Code Playgroud)
这个:
SELECT ROW_NUMBER() OVER(ORDER BY t.bookingid) AS id,
t.bookingid,
t.description
FROM YOUR_TABLE t
Run Code Online (Sandbox Code Playgroud)
......会产生:
id bookingid description
----------------------------
1 1000 Foo
2 3000 Bar
3 1500 Zoo
Run Code Online (Sandbox Code Playgroud)
要更新现有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
Run Code Online (Sandbox Code Playgroud)