问题描述
- 关于一个oracle 的sql 查询
-
哪位大神能帮我看看这个语句怎么写 有区间【i1,i2】与bgpprefix 表中的nstartip 和nstopip 比对,查询能使(i1>=nstartip ,且i2<=nstopip),若存在多个,取nstopip-nstartip 最小的那一项,要求必须是查完要求的区间,在从区间中用min()函数找到nstopip-nstartip的那一项 要求效率要高,各位大神帮个忙啊
解决方案
SELECT TOP 1 nstartip, nstopip
FROM nyein2 37
WHERE i1 >= nstartip
AND i2 <= nstartip
解决方案二:
忘了排序。Oracle 没 TOP。效率高不起来了 :(
SELECT * FROM (SELECT nstartip, nstopip
FROM nyein2 37
WHERE i1 >= nstartip
AND i2 <= nstopip
ORDER BY nstartip
) AS t
WHERE ROWNUM<=1
解决方案三:
这里还没结呢
http://ask.csdn.net/questions/175061
时间: 2024-08-03 15:20:37