求一句有点难度的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