> 数据库 > Oracle >

Oracle数据库实现分页查询

Oracle数据库实现分页查询

最近刚接触oracle数据库,现在工作中使用到了分页查询功能,在这里记一次笔记.

首先了解ROWNUM
*开始在网上查了资料说可以使用ROWNUM,但是实际使用中却发现在有条件的情况下返回的没 有数据,但是数据库中符合的数据是存在的,后来再继续在网上翻阅资料发现ROWNUM只能使用(<、<=、!=)符号,不支持>,>=,= *

对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,相当于角标,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。

select id,name from user_table where rownum > 5 and rownum < 10;


这条查询是没有结果的,后来看到网上说可以使用子查询

select b.* from (select id,name,rownum  rn from user_table)  b where b.rn>5 and b.rn<10


这样就可以实现简单的分页查询了

Mysql中的分页查询

一般的分页查询使用简单的 limit 子句就可以实现。limit 子句声明如下:

SELECT * FROM user_table LIMIT [offset,] rows | rows OFFSET offset


LIMIT 子句可以被用于指定 SELECT 语句返回的记录数。需注意以下几点:

第一个参数指定第一个返回记录行的偏移量
第二个参数指定返回记录行的最大数目
如果只给定一个参数:它表示返回最大的记录行数目
第二个参数为 -1 表示检索从某一个偏移量到记录集的结束所有的记录行
初始记录行的偏移量是 0(而不是 1)
下面是一个应用实例:

select * from user_table where type=8 limit 1000,10;

该条语句将会从表 orders_history 中查询第1000条数据之后的10条数据,也就是第1001条到第10010条数据。

(责任编辑:IT)