2010-06-11 62 views
0

如何一次更新一個包含值列表的表格?

update NewLeaderBoards set MonthlyRank=(Select RowNumber() (order by TotalPoints desc) from LeaderBoards) 

我嘗試了這種方式 -

(Select RowNumber() (order by TotalPoints desc) from LeaderBoards) as NewRanks 
update NewLeaderBoards set MonthlyRank = NewRanks 

但它不爲任何人me..Can工作建議我怎麼能以這樣的方式執行更新..

回答

2

您需要使用WITH語句和完整的CTE:

;With Ranks As 
    (
    Select PrimaryKeyColumn, Row_Number() Over(Order By TotalPoints Desc) As Num 
    From LeaderBoards 
    ) 
Update NewLeaderBoards 
Set MonthlyRank = T2.Num 
From NewLeaderBoards As T1 
    Join Ranks As T2 
     On T2.PrimaryKeyColumn = T1.PrimaryKeyColumn 
+0

謝謝。它有幫助。 – Vishal 2010-06-11 16:26:41

+0

是的,它被稱爲UPDATE FROM語句,如果我記得正確。 – 2010-06-12 09:10:32

相關問題