求助一个找到最小未使用数字的sql语句问题?

请求帮助

现在有一张表
create table usednum
( number    number(10,0)
)

现在表中已经有一些不连续的数字  比如1,2,3,    6,7,8,  13,14

需要找到的是从低到高第一个没有使用的数字。  如上第一个没有使用的数字就是 4

请求大家帮忙,给出一个效率高点的语句,谢谢了
我也来说两句 查看全部回复

最新回复

  • hjwb1216 (2008-7-04 10:31:42)

    使用分析函数lead() over(),如果差额不为1说明就已经是跳跃了,即此数字+1就是你想要的数字
  • nemo410 (2008-7-04 16:56:51)

    select min(rownum) from (
    select rownum from all_objects where rownum<=(select max(nn) from usednum)
    minus
    select number  from usednum
                             )

    [ 本帖最后由 nemo410 于 2008-7-4 16:58 编辑 ]
  • yzsind (2008-7-05 14:42:18)

    比较简单,按字段从小到大排序,再比较一下数值与rownum就可以了,取出不相同的记录,最小的那个就是了,注意要使用子查询

    select min(row_num)
      from (select a.*, rownum  row_num
              from (select a.c1 from t3 a order by a.c1) a)
    where c1 <> row_num

    如果你的数字最小是从n开始的,那就在rownum中加n就可以了

    select min(row_num)
      from (select a.*, rownum+n  row_num
              from (select a.c1 from t3 a order by a.c1) a)
    where c1 <> row_num