我在SQL SERVER数据库标中有一个字段市录入数据时的流水号,当中间被删除一些记录时在录入时我想先补充中间缺失的流水号,我该怎么查找这些缺失的流水号?比如编号顺序为:
           1
           2
           5
           6 
           9
           .
           .
           .
我想知道数据库中断缺的号码:3、4、7、8、10、11、12......,并且按从小到大排序,求最好的方法,最好用SQL语句实现!今天圣诞节高兴,散散分!!!
http://expert.csdn.net/Expert/topic/2601/2601437.xml?temp=.3854334

解决方案 »

  1.   

    wweijie(林黛玉) 
    你的方法存在缺陷,当有几个客户端同时操作时可能会出现问题!!!
      

  2.   

    如果是oracle的话,以下这句可能
    select no from abc where no<> rownum order by no asc;
    意思就是按no排序,如果no不等于行号的话,那么它前面必有中断!
      

  3.   

    另一方法不知道可不可行:一个数组A[1..100],
    select no from abc 到另一个数组B.
    令A- B
      

  4.   

    我有一个简单的办法,呵呵select top 1 id from tbl where (select id from tbl where id=id+1) is null 
    上面的sql语句返回的值+1就是第一个你想回收的ID了
      

  5.   

    回复人: google1106(钻石渣) ( ) 信誉:96  上面回答的方法是可行的