2012-07-31 73 views
3

我在SQL Server 2008数据库中有一个表。我需要更新特定列的值,但同时增加它的值。为了解释:如何更新表中的所有行并增加列?

如果表是:

CREATE TABLE [dbo].[Player] 
(
    [PlayerID] [uniqueidentifier] NOT NULL, 
    [UnitID] [uniqueidentifier] NULL, 
    [ExerciseID] [uniqueidentifier] NOT NULL, 
    [Designation] [nvarchar](256) NOT NULL 
) 

我想通过其中有42C45D73-3FE6-4AFA-8E2F-09BDFC6CBDF7ExerciseID每一行和更新DesignationPlayer - X但X应该从1开始并递增一本身每次。

所以第一个被更新的玩家将是Player - 1第二个将是Player - 2等等。

我不知道从哪里开始这样的事情!

感谢

+0

如何确定的第一个球员?最低的PlayerID?随机?另外,不应该从1开始而不是0开始? – LittleBobbyTables 2012-07-31 14:46:25

+0

大声笑,我爱你的名字:)更新我的问题,说它应该从1开始。我不介意哪个是第一个玩家,只要每个玩家有不同的名字就根本不重要!我只是想清理一个拥有大约8米行的数据库......不忍心逐一浏览它们! – Faraday 2012-07-31 14:47:21

回答

7
; with numbering as (
    select PlayerID, 
     UnitID, 
     ExerciseID, 
     Designation, 
     row_number() over (order by PlayerID) - 1 rn 
    from Player 
    where ExerciseID = '42C45D73-3FE6-4AFA-8E2F-09BDFC6CBDF7' 
) 
update numbering 
    set Designation = 'Player - ' + convert(varchar(10), rn) 
相关问题