2012-07-31 33 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) 
相關問題