Postgres和Oracle包含generate_series / connect by命令,允许将序列递增1次以上。我需要在行插入之前将序列递增一个可变量。例如在Postgres中,这看起来像下面的查询:
select nextval('mytable_seq') from generate_series(1,3);
在Microsoft SQL Server中实现此目的的推荐方法是什么?
答案 0 :(得分:3)
您可以使用stored procedure来电。或者,您可以设置某种java.lang.String
循环,多次调用while
并将其缓存以供日后使用。
答案 1 :(得分:0)
旧问题-新答案:
假设您将序列定义为:
create sequence dbo.IdSequence
as bigint
start with 1
...您可以仅在选择语句中将短语next value for dbo.IdSequence
包含为一列。当我有一个序列值时,我想与一个结果集配对,我会做类似的事情:
select
next value for dbo.IdSequence as Seq,
someSource.Col1,
someSource.Col2 --> ... and so on
from
dbo.someSource
如果需要特定数量的序列值,我将使用某种生成虚值的sql表值函数:
select
next value for dbo.IdSequence Seq
from
dbo.FromTo( 1, 5 )
请注意,如果使两个列从相同的序列中请求值,则它们将为每一列返回相同的值。可能不是您想要的:
select
next value for dbo.IdSequence Seq1,
next value for dbo.IdSequence Seq2
from
dbo.FromTo( 1, 5 )
...返回类似:
Seq1 Seq2
--------------------------
549 549
550 550
551 551
552 552
553 553
FromTo
是一个生成数字的简单函数。在this question的答案(很多)中有很多出色的函数示例。