首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

100分一个sql语句(oracle数据库)

2012-02-03 
100分求助一个sql语句(oracle数据库)问题描述:表A有n(n 10000)条记录,现在想每次从A表中取出10条记录(不

100分求助一个sql语句(oracle数据库)
问题描述:
表A有n(n> 10000)条记录,现在想每次从A表中取出10条记录(不足10的全部取出),
要求每次查询从上次查询的最后一条开始取10条.记录集按时间排序。

(再次说明:oracle数据库)

比如:

                  a                     b                   c               记录时间
                  --                 ---               ---   -------------------
                  7                     0                   84   2007-04-28   10:00:00
                  7                     0                   85   2007-04-28   10:00:00
                  7                     0                   86   2007-04-28   10:00:00
                  7                     0                   87   2007-04-28   10:00:00
                  7                     0                   88   2007-04-28   10:00:00
                  7                     0                   89   2007-04-28   10:00:00
                  7                     0                   94   2007-04-28   10:00:00
                  7                     0                   95   2007-04-28   10:00:00
                  7                     0                   96   2007-04-28   10:00:00
                  7                     0                 103   2007-04-28   10:00:00

                  7                     0                 104   2007-04-28   10:00:00
                  7                     0                 105   2007-04-28   10:00:00
                  7                     0                 106   2007-04-28   10:00:00


                  7                     0                 107   2007-04-28   10:00:00
                  7                     0                 108   2007-04-28   10:00:00
                  7                     0                 115   2007-04-28   10:00:00
                  7                     0                 116   2007-04-28   10:00:00
                  7                     0                 117   2007-04-28   10:00:00
                  7                     0                 118   2007-04-28   10:00:00
                  7                     0                 119   2007-04-28   10:00:00
                  7                     0                 120   2007-04-28   10:00:00
                  7                     0                 121   2007-04-28   10:00:00

                  7                     0                 122   2007-04-28   10:00:00
                  7                     0                 123   2007-04-28   10:00:00
                  7                     0                 124   2007-04-28   10:00:00
                  7                     0                 125   2007-04-28   10:00:00
                  7                     0                 126   2007-04-28   10:00:00
                  7                     0                 127   2007-04-28   10:00:00
                  7                     0                 128   2007-04-28   10:00:00


                  7                     0                 129   2007-04-28   10:00:00
                  7                     0                 130   2007-04-28   10:00:00
                  7                     0                 131   2007-04-28   10:00:00
                  7                     0                 132   2007-04-28   10:00:00
                          ......


第一次取出1~10条   (上面字段c   的值从84到103);
第二次取出11~20条   (上面字段c的值从104到121);
    ...
依次类推...

请高手指教,可行就给分。

[解决办法]
select A.a,A.b,A.c
from (select row_number() over(order by c) num,a,b,c
from 表A)A
where num > startnum
and num <= endnum
[解决办法]
SELECT A,B,C
FROM (
SELECT ROWNUM AS RNUM, A,B,C FROM TABLENAME ORDER BY 记录时间
)
WHERE RNUM BETWEEN StartNUM AND (StartNUM + 10)
[解决办法]
后面回复的都是正确的
rownum是伪列,需要子查询先查出来再操作.
否则,不能用> ,只能是从1开始用 <

热点排行