SQL更新记录,每次从1开始递增

SQL更新记录,每次从1开始递增,sql,sql-update,auto-increment,Sql,Sql Update,Auto Increment,我使用单个insert语句向表中添加成批记录。我希望每一个新的批被分配递增的数字,但每次从1开始 所以,如果我有 Batch Name IncementingValue 1 Joe 1 1 Pete 2 1 Andy 3 2 Sue 1 2 Mike 2 2 Steve 3 然后我使用一条insert语句添加两条记录: 3 Dave 3

我使用单个insert语句向表中添加成批记录。我希望每一个新的批被分配递增的数字,但每次从1开始

所以,如果我有

Batch    Name    IncementingValue
1        Joe     1
1        Pete    2
1        Andy    3
2        Sue     1
2        Mike    2
2        Steve   3
然后我使用一条insert语句添加两条记录:

3        Dave
3        Paul
如何对此表运行update语句,以便将Dave设置为1,将Paul设置为2。我不想使用光标

排名函数ROW_NUMBER应该满足您的需要。您没有提到关于如何分配序列号的任何具体规则,因此我在这里使用了以下名称:

INSERT targetTable(Batch,Name,IncementingValue)
SELECT BatchId,
       Name,
       ROW_NUMBER() OVER (ORDER BY Name)
FROM sourceTable

我需要完成一些类似的事情,包括日期和格式化的数字

希望有人会发现这个例子很有用

    update TEST_TABLE 
    set ref = reference
          from (
                      select 
                          *, 
                          (CONVERT(VARCHAR(10),GETDATE(),12) + RIGHT('0000' + CAST(ROW_NUMBER() OVER (ORDER BY id) AS VARCHAR(4)), 4)) as reference 
                      from TEST_TABLE
                      WHERE 
                    test_table.id > 4
                        and
                    test_table.id < 8 
                ) TEST_TABLE

您的目标是哪个RDBMS?@Ed-您知道我是否可以通过更新语句应用这些值吗?例如,更新SegmentationKeysUnconstrated set batchrownumber=通过跟踪SegmentationKeysUnconstrated中的TokenId来排列顺序,其中batchid='58D73880-31B1-40AF-A749-7F6EBEAAF3E4'我的问题是我需要分配一组多个insert语句上的行数值,因此我不能在插入点实际使用行数-我必须在多个插入完成后使用行数。以下操作完成了技巧:从SELECT batchrownumber更新derivedtable SET batchrownumber=rowno,按batchid顺序按trackingtokenid作为来自SegmentationKeys的行号进行的行号超额分配,其中batchid='58D73880-31B1-40AF-A749-7F6EBEAF3E4'作为派生表