2010-06-11 63 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

相关问题