在oracle数据库中的分页SQL语句怎么写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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,又被删除,依次类推,便没有了数据。

参考技术A select * from
(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

本回答被提问者采纳
参考技术B 有条语句可以设置查询显示的行数,不知道你是不是这个意思
语句:set pagesize n ,n的默认值为14,即每页显示14行,你可以自己设置追问

可以写个例子来看下吗?

参考技术C SELECT * FROM ( SELECT A.*, ROWNUM RN FROM
(
select count(*) over() DATACNT,ta.* from ta
)
) A WHERE ROWNUM <= 100
) WHERE RN >= 75
参考技术D select * from(select A.*,ROWNUM rn from(sql) A where ROWNUM<=(firstIndex+pageSize)) where rn>firstIndex

Oracle, SQL Server, My SQL如何实现数据分页查询语句

参考技术A Oracle, SQL Server 和MySQL的分页SQL语句如下:Oracle:方法一:SELECT * FROM(SELECT A.*, ROWNUM RNFROM (SELECT * FROM TABLE_NAME) AWHERE ROWNUM <= 40)WHERE RN = 21;方法二:SELECT * FROM(SELECT A.*, ROWNUM RNFROM (SELECT * FROM TABLE_NAME) A)WHERE RN between 21 and 40公认第二种方法效率没有第一种高。原因是第二种要把子查询执行完,而第一种方法子查询执行到Rownum=40后就结束了。MySQL:SELECT * FROM TABLE_NAME LIMIT 10, 20表示从第11条数据开始取20条数据返回,limit后的2个参数含义为:起点和步长,即从那条数据开始,取多少条数据,再如取前20条数据:SELECT * FROM TABLE_NAME LIMIT 0, 20SQL Server2000:SELECT TOP @pagesize * FROM TABLE_NAME WHERE id not in (SELECT TOP @pagesize*(@page-1) id FROM TABLE_NAME ORDER BY id) ORDER BY id本回答被提问者采纳

以上是关于在oracle数据库中的分页SQL语句怎么写?的主要内容,如果未能解决你的问题,请参考以下文章

初学oracle,怎样写一个oracle分页sql语句

Oracle, SQL Server, My SQL如何实现数据分页查询语句

oracle分页 语句

初学oracle,怎样写一个oracle分页sql语句?

java&sql的分页怎么做?

分页查询的sql 语句(参数1,参数2)?怎么写?