求一句有点难度的sql语句,该怎么解决

求一句有点难度的sql语句
我有个字段是   int型   是主见   不能用自增长   是通过数据比较确定值的  
我的问题是
如果   我有100条记录   字段值是1-100   如果我删除了其中一条记录   没有其他地方记录删除的id信息   我想重复使用被删除的那条记录的id怎么做。
比如   我删除了第2条记录id值是2     我在增加新记录时   想找出1-100中已经没有被占用的数   就是刚才删除的数“2”   ,怎么找一个范围内没有数。

不用循环比较方法   数据多了那就太慢了
大家有什么思路没   讨论下



------解决方案--------------------
最好的办法是每次删除后将此id纪录下来,下次使用时从此表中调用
------解决方案--------------------
找出第一个缺号

select top 1 a.id+1 as id
from tablename a left join tablename b
on b.id=a.id+1
where b.id is null
------解决方案--------------------
找出第一个缺号

select top 1 a.id+1 as id
from tablename a left join tablename b
on b.id=a.id+1
where b.id is null

--有bug

假如删除是1,就不对啦


------解决方案--------------------
--用循环,数据量比较大的话会很麻烦,还是把所删除的Id记录下来,保存到另外一张表里面比较好点
declare @tb table(id int)
declare @i int
set @i=1
while @i <=100
begin
if not exists( select * from # where id1=@i)
insert into @tb select @i
set @i=@i+1
end
select * from @tb
------解决方案--------------------
ojuju10(longdchuanren) ( ) 信誉:100 Blog 加为好友 2007-5-15 9:28:19 得分: 0



找出第一个缺号

select top 1 a.id+1 as id
from tablename a left join tablename b
on b.id=a.id+1
where b.id is null

--有bug

假如删除是1,就不对啦


-----------------------------------
确实有bug
这么改下吧
select top 1 a.id+1 as id
from (seelct id from tablename union all seelct 0 ) a left join tablename b
on b.id=a.id+1
where b.id is null





------解决方案--------------------

select top 1 a.id+1 as id
from (select id from tablename union all select 0 ) a left join tablename b
on b.id=a.id+1
where b.id is null

------解决方案--------------------
循环不一定慢,关键看算法
声明一个变量@a 等于1到100的累加

select @a - sum(id) from T