oracle查询连续编号中缺失的编号

问题:有一个这样的需求,

车辆表JW_BUS里车辆编号字段BUS_NO(类似1001等数字编号),新增车辆编号时,想在1000编号到表中最大的车辆编号(可能是1990等)之间查找出表中没有的编号作为新增的车辆编号?

 

思路:

1.可以通过connect by level方法查询出所有1000-最大编号之间的所有编号

2.通过oracle关联查询出所有不存在的编号

3.查询前N条编码返回到后台使用即可

 

 

select a.ln
  from (
  select tmp1.ln
          from (select level ln
                  from (select max(to_number(JW_BUS.bus_no)) count_num
                          from JW_BUS
                         where to_number(JW_BUS.bus_no) > 1000)
                connect by level <= count_num) tmp1,
               JW_BUS tmp2
         where tmp1.ln = tmp2.bus_no(+)
           and tmp2.bus_no is null
           and tmp1.ln > 1000
           and not exists
               (select 1 from BATCH_JW_BUS_DETAIL  where BATCH_JW_BUS_DETAIL.bus_no = tmp1.ln)
         order by tmp1.ln
        ) a
 where rownum <= 10

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值