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

发布于 2021-09-13 02:07

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

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

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材