2015-04-23 88 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而不是物理表,序列号为 –