MySQL oracle 分页
(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;
最新文章
- top命令
- Canvas画图在360浏览器中跑偏的问题
- Xcode安装的推送证书所在目录
- MVC。Action方法,常用的返回类型有几种?
- 如何解决cellIndex在IE下兼容性问题
- python将json格式的数据转换成文本格式的数据或sql文件
- 【LOI2005】【P1306】河流
- hbuilder的aptana php插件无法提示命名空间之外函数和对象的解决办法
- 在编辑框(CEdit)控件上追加内容
- 某deed笔试题
- [转载]MongoDB开发学习(2)索引的基本操作
- Mac OS X安装之硬盘和光盘引导总结
- 【一天一道LeetCode】#106. Construct Binary Tree from Inorder and Postorder Traversall
- chrome ";Provisional headers are shown";
- [UOJ310] 黎明前的巧克力
- CentOS 6.9/7通过yum安装指定版本的MySQL
- 【C++ Primer 第13章】6.对象移动
- 微软BI 之SSIS 系列 - 变量查询语句引起列输出顺序不一致的解决方法
- Net::HTTP 一次添加 cookie, body 发送post请求
- Windows远程桌面连接的利器-mRemote
热门文章
- ORACLE中死锁的知识点总结
- 【基础】C#异常处理的总结
- Dojo初探之3:dojo的DOM操作、query操作和domConstruct元素位置操作(基于dojo1.11.2版本)
- 在WIN SERVER 2016上安装DOCKER(带过坑)
- XtraBackup物理备份 阿里云的Mysql备份方案
- android蓝牙学习
- SQL Server 使用ROW_NUMBER实现的高效分页排序
- Akka(9): 分布式运算:Remoting-远程构建式
- CSS 中的内联元素、块级元素、display的各个属性的特点
- jQuery实现按Enter键触发事件