我最近继承了一个数据库,在该数据库上,表中的一个具有由编码值组成的主键(Part1 * 1000 + Part2)。 我对该列进行了归一化,但无法更改旧值。所以现在我有
select ID from table order by ID ID 100001 100002 101001 ...
我想在表中找到新行的“孔”(更准确地说是100000之后的第一个“孔”)。 我正在使用以下选择,但是有更好的方法吗?
select /* top 1 */ ID+1 as newID from table where ID > 100000 and ID + 1 not in (select ID from table) order by ID newID 100003 101029 ...
该数据库是Microsoft SQL Server2000。我可以使用SQL扩展名。
select ID +1 From Table t1 where not exists (select * from Table t2 where t1.id +1 = t2.id);
不知道此版本是否会比您最初提到的版本快。