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条数据。
此次记录为笔记,有误之处还望各位指正!