博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL oracle 分页
阅读量:5065 次
发布时间:2019-06-12

本文共 887 字,大约阅读时间需要 2 分钟。

(1)MySql的Limit m,n语句

Limit后的两个参数中,参数m是起始下标,它从0开始;参数n是返回的记录数。我们需要分页的话指定这两个值即可。

比如:查询10行记录,起始行从3开始

SELECT * FROM emp LIMIT 3, 10;

(2)Oracle数据库的分页需要用到rownum

rownum伪列

rownum伪列是Oracle首先进行查询获取到结果集之后在加上去的一个伪列,这个伪列对符合条件的结果添加一个从1开始的序列号,先看一个例子:

select rownum,e.* from emp e; 

 

查询前10条记录,我们可以这么写;

select rownum,e.* from emp e where rownum <=10; 

于是根据rownum,这个时候我们产生了分页的一个想法,取6~10条记录:

select rownum,e.* from emp e where rownum >5 and rownum <=10; 

但是我们发现这行不通,那么怎么会出现这个情况呢?原因在于,当生成结果集时,rownum每次都是从1开始产生,但是我们的条件里rownum>5,导致这条记录被过滤,这样再次次产生的rownum都是1,再次过滤,以此一直持续下去。

那么怎么实现分页呢?重要之处在于:

子查询里固定表里面数据的记录编号,外层查询过滤子查询里面固定的记录编号就可以实现Oracle分页!

select  *  from (select rownum rn,e.* from emp e where rownum <=10 ) e1 where rn>6;  

如果我们要对emp表中的列sal进行排序,再分页,我们可以这样写。

 

select *

from (select rownum r,e1.*
from (select * from emp order by sal) e1
where rownum <=8
)
where r >=5;

 

 

 

 

转载于:https://www.cnblogs.com/sunTin/p/6783070.html

你可能感兴趣的文章
springboot 单元测试
查看>>
1041 考试座位号
查看>>
迷宫问题
查看>>
模糊查询和聚合函数
查看>>
BZOJ 2134: 单选错位
查看>>
利用反射技术修改类中的字段(成员变量的反射)
查看>>
JDBC 连接池源代码
查看>>
学习总结:机器学习(六)
查看>>
算法题归纳
查看>>
SQLServer跟踪相关
查看>>
4.3 大图轮播
查看>>
基本数据类型存储空间
查看>>
python当中的生成器
查看>>
学习软件工程的体会
查看>>
骆驼命名法
查看>>
python3----运算符
查看>>
Django中间件2
查看>>
使用UIImageView实现图像拖动、缩放等
查看>>
android测试之monkey测试
查看>>
从DataTable高效率导出数据到Excel
查看>>