手动指定Row_Number()的起始值

Huz*_*ifa 30 sql sql-server row-number

我想定义ROW_NUMBER()as 的开头3258170而不是1.

我正在使用以下SQL查询

SELECT ROW_NUMBER() over(order by (select 3258170))  as 'idd'.
Run Code Online (Sandbox Code Playgroud)

但是,上述查询无效.当我说不工作时,我的意思是它的执行,但它不是从它开始3258170.有人能帮助我吗?

我想指定行号的原因是我将Rows从一个表插入另一个表.在第一个表中,最后一个记录的行号是3258169,当我插入新记录时,我希望它们具有行号3258170.

Gor*_*off 60

只需将值添加到结果row_number():

select 3258170 - 1 + row_number() over (order by (select NULL)) as idd
Run Code Online (Sandbox Code Playgroud)

order by子句row_number()指定了用于订单的列.通过在那里指定一个常量,你只是说"一切都有相同的价值用于订购目的".它没有任何东西,没有任何与选择的第一个值有关.

为避免混淆,我用NULL替换了常量值.在SQL Server中,我观察到这会分配一个序列号,而不会对行进行实际排序 - 这是一个观察到的性能优势,但不是我见过的记录,所以我们不能依赖它.


Tom*_*ugh 8

我觉得这更容易

ROW_NUMBER() OVER(ORDER BY Field) - 1 AS FieldAlias (To start from 0)
ROW_NUMBER() OVER(ORDER BY Field) + 3258169 AS FieldAlias (To start from 3258170)
Run Code Online (Sandbox Code Playgroud)