如何将返回集合的多行中列的 int 值加一?

Xer*_*xes 1 sql t-sql sql-server

我希望能够将多行结果集中返回的列的 int 值增加 1。例如,以下查询将从表中返回一个结果集,如下所示:

select numinbatch from items i where i.ID > @itemID and i.BatchID = @batchID

4
5
6
7
Run Code Online (Sandbox Code Playgroud)

我想通过将这些值增加 1 来更新它们,以便:

5
6
7
8
Run Code Online (Sandbox Code Playgroud)

我现在有以下内容,但我在加号下看到了一条红色的波浪形错误线。

declare @idToIncrement as int
declare cur cursor fast_forward for select numinbatch from items i where i.ID > @itemID and i.BatchID = @batchID

    open cur
    fetch next from cur into @idToIncrement

    while @@FETCH_STATUS = 0
    Begin
    EXEC

    --increment numinbatch or @idToIncrement
    @idToIncrement= @idToIncrement + 1

     fetch next from cur into @field1, @field2
    END

    close cur
    deallocate cur
Run Code Online (Sandbox Code Playgroud)

我知道游标对性能不利,因此如果有人有更好的解决方案,请随时分享。

Ric*_*iwi 5

我会这样做:

select numinbatch + 1 numinbatch_increased_by_1
  from items i
 where i.ID > @itemID and i.BatchID = @batchID
Run Code Online (Sandbox Code Playgroud)

如果你想将UPDATE值存入表中,那么

UPDATE items i
   SET numinbatch = numinbatch + 1
 WHERE i.ID > @itemID AND i.BatchID = @batchID
Run Code Online (Sandbox Code Playgroud)