SQL Server:添加增量值(不是标识)

时间:2017-10-06 11:39:47

标签: sql sql-server insert

我有一张桌子,我想插入一些行。有一列num不是标识。当插入新行时,我希望num值从最高现有值开始递增1。这是我的代码,直到现在:

insert into table1 ( num, val)
select (( select max(num) from table1) + row_number() over (order by num)), val
from table1

这是我得到的错误:

  

子查询返回的值超过1。这是不允许的   子查询跟随=,!=,<,< =,>,> =或当子查询用作   表达。

更新 错误来自触发器,所以我发布了一个关于触发器的新问题: SQL Server 2012 trigger: Doesnt work with multiple rows inserted

1 个答案:

答案 0 :(得分:0)

您应该使用窗口函数而不是子查询:

insert into table1 (num, val)
    select ( max(num) over () + row_number() over (order by num) ), val
    from table1;

但是,您问题中的查询无法返回该错误,因为没有group by的聚合查询始终只返回一行。