日期:2014-05-17  浏览次数:20829 次

如何按顺序提取数据
我有一个表,127条记录,
我想加个条件只提取1~5条记录然后是11~15条记录,中间的6~10条记录不要,依次提取下去,请问用什么方法好?谢谢。
------最佳解决方案--------------------
可以通过取余函数mod


with t1 as
(
     select 1 c1,'a' c2 from dual
     union all
     select 23 c1,'a' c2 from dual
     union all
     select 6 c1,'a' c2 from dual
     union all
     select 11 c1,'a' c2 from dual
)
select *
from t1
where mod(c1,10) between 1 and 5


     c1    c2
---------------------------
1 1 a
2 23 a
3 11 a

------其他解决方案--------------------
SELECT * FROM (
select fieldid from tablename order by fieldid
)  where rownum <=5 

UNION
SELECT fieldid FROM (
SELECT * FROM 
(select fieldid from tablename  order by fieldid)
MINUS
SELECT * FROM 
(SELECT fieldid FROM tablename where rownum <=10 order by fieldid)
)

------其他解决方案--------------------
select * from tablename where rownum =5 order by fieldid
union
select * from tablename where rownum >10 order by fieldid
------其他解决方案--------------------
这样不行提取不到。
------其他解决方案--------------------
select * from tablename where rownum <=5 order by fieldid
UNION
SELECT * FROM (
select * from tablename  order by fieldid
MINUS
SELECT * FROM tablename where rownum <=10 order by fieldid
)
------其他解决方案--------------------
后来通过仔细查看,发现少了10,与20两个序号的内容。