Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 如何一次用值列表更新表?_Tsql_Sql Server 2008 - Fatal编程技术网

Tsql 如何一次用值列表更新表?

Tsql 如何一次用值列表更新表?,tsql,sql-server-2008,Tsql,Sql Server 2008,我有 我这样试过- update NewLeaderBoards set MonthlyRank=(Select RowNumber() (order by TotalPoints desc) from LeaderBoards) 但它对我不起作用。有人能建议我如何以这种方式执行更新吗?您需要使用WITH语句和完整的CTE: (Select RowNumber() (order by TotalPoints desc) from LeaderBoards) as NewRanks upd

我有

我这样试过-

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

但它对我不起作用。有人能建议我如何以这种方式执行更新吗?

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

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

是的,如果我没记错的话,它被称为updatefrom语句。
;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