关于oracle 的sql 查询 问题

哪位大神能帮我看看这个语句怎么写 有区间【i1,i2】与bgpprefix 表中的nstartip 和nstopip 比对,查询能使(i1>=nstartip ,且i2<=nstopip),若存在多个,取nstopip-nstartip 最小的

2个回答

如下就可以了

 select * from(
select * from bgpprefix  where nstartip<=i1 and nstopip>=i2 order by nstopip-nstartip
) where rownum=1
danielinbiti
danielinbiti 回复zhangwushangzqm: 前面不给你回min了嘛,什么情况?
4 年多之前 回复
u014510553
zhangwushangzqm 回复zhx19920405: 你能帮我看看吗?他们说上面那个用rownum 的效率太低,要求是取完区间之后,直接把nstopip-nstartip最小的那一项取出来,要是使用min()函数要怎么做啊
4 年多之前 回复
zhx19920405
技术小白猿 回复zhangwushangzqm: min()函数时数据库自带的一个函数,选出最小值的意思
4 年多之前 回复
danielinbiti
danielinbiti 回复zhangwushangzqm: select min(nf) from( select nstopip-nstartip nf from bgpprefix where nstartip<=i1 and nstopip>=i2)
4 年多之前 回复
u014510553
zhangwushangzqm 请问使用min函数要怎么做?
4 年多之前 回复

哪位大神能帮我看看这个语句怎么写 有区间【i1,i2】与bgpprefix 表中的nstartip 和nstopip 比对,查询能使(i1>=nstartip ,且i2<=nstopip),若存在多个,取nstopip-nstartip 最小的

采用这个

select * from ( select * from bgpprefix where i1>=nstartip and i2<=nstopip order by nstopip - nstartip asc) b where rownum <= 1;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!