在oracle数据库中的分页SQL语句怎么写?
前提:
分页参数:size = 20 page = 2;
没有order by的查询;
嵌套子查询,两次筛选(推荐使用)。
SQL语句:
SELECT *
FROM (SELECT ROWNUM AS rowno, t.*
FROM DONORINFO t
WHERE t.BIRTHDAY BETWEEN TO_DATE ('19800101', 'yyyymmdd')
AND TO_DATE ('20060731', 'yyyymmdd')
AND ROWNUM <= 20*2) table_alias
WHERE table_alias.rowno > 20*(2-1);
扩展资料:
rownum总是从1开始的,第一条不满足去掉的话,第二条的rownum 又成了1。依此类推,所以永远没有不满足条件的记录。
可以这样理解:rownum是一个序列,是Oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2。
依次类推:当使用“>、>=、=、between...and”这些条件时,从缓冲区或数据文件中得到的第一条记录的rownum为1,不符合sql语句的条件,会被删除,接着取下条。下条的rownum还会是1,又被删除,依次类推,便没有了数据。
(select a.*,rownum rn from
(select * from 表名) a
)
where rn between 1 and 50
50行为一页
1和50为行号,根据你的情况自己改
那我直接这样写行不
select * from (select * from 表名) where rowNum <=3
分页推荐用between
语句:set pagesize n ,n的默认值为14,即每页显示14行,你可以自己设置
可以写个例子来看下吗?
(
select count(*) over() DATACNT,ta.* from ta
)
) A WHERE ROWNUM <= 100
) WHERE RN >= 75