我希望能够将多行结果集中返回的列的int值递增1.例如,以下查询将从表中返回结果集,如下所示:
select numinbatch from items i where i.ID > @itemID and i.BatchID = @batchID
4
5
6
7
我希望通过将它们递增1来更新这些值,以便:
5
6
7
8
我现在有以下内容,但我在加号下面得到一条红色的波浪形错误线。
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
我知道游标对性能不利,所以如果任何人有更好的解决方案,请随意分享。
答案 0 :(得分:4)
我会这样做:
select numinbatch + 1 numinbatch_increased_by_1
from items i
where i.ID > @itemID and i.BatchID = @batchID
如果您希望UPDATE
表中的值,那么
UPDATE items i
SET numinbatch = numinbatch + 1
WHERE i.ID > @itemID AND i.BatchID = @batchID
答案 1 :(得分:1)
SELECT numinbatch + 1 FROM items WHERE ID > @itemID AND BatchID = @batchID
假设numinbatch是数字。不需要游标。