我有一张桌子,我想插入一些行。有一列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
答案 0 :(得分:0)
您应该使用窗口函数而不是子查询:
insert into table1 (num, val)
select ( max(num) over () + row_number() over (order by num) ), val
from table1;
但是,您问题中的查询无法返回该错误,因为没有group by
的聚合查询始终只返回一行。