SQL 现有列的增量值

SQL Incremental Value for Existing Column

我在 sql 服务器中有一个具有以下结构的 table,我想创建一个更新存储过程来设置 seq_num 列的值。

fname lname orderid seq_num
Torrey Venard 246 376987
Gabey Tate 247 376988
Germaine Ferminger 248 376989
Nikita Sharplin 249 376990
Boyd Rannigan 250 376991
Claretta Paoli 251 376992
Barn Kulver 252 376993
Torrey Venard 253 376994
Gabey Tate 254 NULL
Germaine Ferminger 255 NULL
Nikita Sharplin 256 NULL
Boyd Rannigan 257 NULL

总行数约为 20k。理想情况下,我们应该将此列作为自动增量,但我们正在寻找的是用下一个数字填充 NULL,如下所示:

fname lname orderid seq_num
Torrey Venard 246 376987
Gabey Tate 247 376988
Germaine Ferminger 248 376989
Nikita Sharplin 249 376990
Boyd Rannigan 250 376991
Claretta Paoli 251 376992
Barn Kulver 252 376993
Torrey Venard 253 376994
Gabey Tate 254 376995
Germaine Ferminger 255 376996
Nikita Sharplin 256 376997
Boyd Rannigan 257 376998

任何想法建议将不胜感激!

我认为 seq_num 列是整数。所以你可以尝试使用 cursor 如下:

DECLARE @Orderid int 

DECLARE Seq_CURSOR CURSOR FOR 

    Select  Orderid from table1 Where seq_num IS NULL  Order by Orderid

    OPEN Seq_CURSOR
    BEGIN TRY
    FETCH NEXT FROM Seq_CURSOR  INTO @Orderid  

    
    WHILE @@FETCH_STATUS = 0 
        BEGIN
            BEGIN TRAN   
            
           Update table1 set seq_num = (Select Max(seq_num)+1 from table1 )  Where orderId = @Orderid

            FETCH NEXT FROM Seq_CURSOR  INTO @Orderid  
            
            SET CURSOR_CLOSE_ON_COMMIT OFF;
            COMMIT TRAN;
                      
        END
        DEALLOCATE Seq_CURSOR;   
    END TRY 

    BEGIN CATCH 
    PRINT ERROR_MESSAGE()
        ROLLBACK
    END CATCH
CLOSE Seq_CURSOR
DEALLOCATE Seq_CURSOR