2015-04-23 51 views
1

我有表中以下格式更新列使用行號

UserID SeqID RowNum 
1  8041  0   
1  8045  0    
1  8045  0 
2  6587  0 
2  5624  0 

我想基礎上,userId列更新RowNum列如下

UserID SeqID RowNum 
1  8041  1   
1  8045  2    
1  8045  3 
2  6587  1 
2  5624  2 

如何使用行號概念更新RowNum列?

注意:它只是樣本數據。所以我無法使用硬編碼UserId值進行更新。我在這張桌上有數百萬條記錄。

在此先感謝。

+0

所以,請訪問此:https://msdn.microsoft.com/en-us/library/ms189798.aspx –

回答

3

在SQL Server中,你可以使用row_number()和CTE:

with toupdate as (
     select t.*, row_number() over (partition by UserId order by SeqId) as seqnum 
     from table t 
    ) 
update toupdate 
    set rownum = seqnum; 
+0

戈登:選擇statemet很好。但代碼不會更新數據庫中物理表中的數據。 –

+0

@DeepikaKrishnamoorty。 。 。而'update'不帶'where'應該更新表格。我不能說爲什麼沒有。也許你沒有更新桌面上的權限。 –

+0

好。我在數據庫中有更新權限。但實際上查詢只更新CTE而不是物理表,序列號爲 –