使用基于SQL Server中主键列的行号更新列

时间:2015-04-23 11:08:37

标签: sql sql-server sql-server-2012

我有以下格式的表格

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

我想根据RowNum列更新userId列,如下所示

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

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

注意:它只是样本数据。所以我无法使用UserId值进行硬编码更新。我在这张表中有数百万条记录。

提前致谢。

1 个答案:

答案 0 :(得分: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;