我有一个表,该表具有一个唯一的ID列,它是一个int。这并不一定包含所有数字,最多是最大值,有些数字会被漏掉(它不是标识列,这超出了我的控制范围)。
我需要从该表中选择一些现有的行,并将它们添加到末尾,以更改一列的数据,并且每一行都有一个新的ID,从MAX ID开始递增。像这样的东西:
declare @maxID int;
set @maxID = (select MAX("ID") from "table");
insert into "table"
select @maxID + ROW_NUMBER, 'newData', "col3", "col4"
from "table" where "col2" = 'oldData';
但是,我不确定从何处获取它-ROW_NUMBER需要OVER语句,在这种情况下,我实在不明白。
有什么帮助吗?
您需要订购ROW_NUMBER将生成数字的顺序。在这里,现有ID是一个不错的选择。
declare @maxID int;
set @maxID = (select MAX("ID") from "table");
insert into "table"
select @maxID + ROW_NUMBER OVER (ORDER BY "ID"), 'newData', "col3", "col4"
from "table" where "col2" = 'oldData';
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句