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 我们将第一时间删除。
相关素材