Oracle分页查询语句
2016-12-06 09:48
295 查看
声明:此文章纯属自己的观点,理解程度不同,但保证文章的正确性,以供雅俗共赏
先说一下mysql的分页查询
mysql分页语句:select 要查询的列 from 表名称 limit ?,?
该SQL语句的意思是:从第几行开始,然后取多少行,mysql中,第一行的下标是0
例如我要取数据库中的前10行数据,我的SQL语句应该这样写
select * from user limit 0,10;从0坐标开始,查询10行数据,总共10行数据 注意:坐标是从数据库的表中哪行数据开始的位置,后面的行数才是
你总共查询的数据的个数,包括你开始时的 坐标的那条数据
oracle中有一个rownum的伪列,因为该rownum伪列不支持>号,所以向下面的这种条件查询语句是行不通的,但是它又不像SQL语句那样可以使用
select * from limit ?,? limit 关键字在Oracle中也是没有的,那我们如何分页查询Oracle中的一张表的数据呢?
分析:我们可以给要分页的表增加一个列,该列显示表数据每行的行数,如rownum伪列就有这项功能,这样增加的列名就不是伪列,而是
一个查询结果的表数据中的一个新列
下面开始步骤:
打开Oracle数据库,复制下面的查询语句即可看到真实的效果,如果你喜欢看字理解,那更好了,截图的图片太大了上传不了
select * from emp;
先看下要分页表中的所有的数据
以该表的数据为基础增加一个新的列rw,获得一个新的表数据
select rownum rw ,e.* from (select * from emp) e where rownum <=10;
将获得的这个有rw列的表做为查询对象进行分页数据的获取
select * from (select rownum rw ,e.* from (select * from emp) e where rownum <=10
) t where t.rw>=1;
这样就查询到了从零坐标开始一直到第九条数据,因为行号是<10的所以只有9条数据
这样的话就完成了分页查询,以后只需要修改开始的坐标rw,和结束的行号就可以了,所以总结查询一张Oracle的分页数据的语句如下
select * from (select rownum rw ,e.* from (select * from emp) e where rownum <=结束行号
) t where t.rw>=开始行号
另附开始和结束行号的计算:
已知条件
pageNo:当前的页码
pageSize:每页记录数
未知条件
startNum:开始行号
endNum:结束行号
pageNo pageSize startNum endNum
1 5 0 6
2 5 5 11
3 5 10 16
startNum = (pageNo - 1)*pageSize;
endNum = pageNo*pageSize + 1;
先说一下mysql的分页查询
mysql分页语句:select 要查询的列 from 表名称 limit ?,?
该SQL语句的意思是:从第几行开始,然后取多少行,mysql中,第一行的下标是0
例如我要取数据库中的前10行数据,我的SQL语句应该这样写
select * from user limit 0,10;从0坐标开始,查询10行数据,总共10行数据 注意:坐标是从数据库的表中哪行数据开始的位置,后面的行数才是
你总共查询的数据的个数,包括你开始时的 坐标的那条数据
oracle中有一个rownum的伪列,因为该rownum伪列不支持>号,所以向下面的这种条件查询语句是行不通的,但是它又不像SQL语句那样可以使用
select * from limit ?,? limit 关键字在Oracle中也是没有的,那我们如何分页查询Oracle中的一张表的数据呢?
分析:我们可以给要分页的表增加一个列,该列显示表数据每行的行数,如rownum伪列就有这项功能,这样增加的列名就不是伪列,而是
一个查询结果的表数据中的一个新列
下面开始步骤:
打开Oracle数据库,复制下面的查询语句即可看到真实的效果,如果你喜欢看字理解,那更好了,截图的图片太大了上传不了
select * from emp;
先看下要分页表中的所有的数据
以该表的数据为基础增加一个新的列rw,获得一个新的表数据
select rownum rw ,e.* from (select * from emp) e where rownum <=10;
将获得的这个有rw列的表做为查询对象进行分页数据的获取
select * from (select rownum rw ,e.* from (select * from emp) e where rownum <=10
) t where t.rw>=1;
这样就查询到了从零坐标开始一直到第九条数据,因为行号是<10的所以只有9条数据
这样的话就完成了分页查询,以后只需要修改开始的坐标rw,和结束的行号就可以了,所以总结查询一张Oracle的分页数据的语句如下
select * from (select rownum rw ,e.* from (select * from emp) e where rownum <=结束行号
) t where t.rw>=开始行号
另附开始和结束行号的计算:
已知条件
pageNo:当前的页码
pageSize:每页记录数
未知条件
startNum:开始行号
endNum:结束行号
pageNo pageSize startNum endNum
1 5 0 6
2 5 5 11
3 5 10 16
startNum = (pageNo - 1)*pageSize;
endNum = pageNo*pageSize + 1;
相关文章推荐
- oracle查看用户;查看用户表空间;设置用户表空间;创建、修改、删除表空间
- ORACLE CONNECT_BY_ROOT
- 【密码】Oracle用户密码系列
- Oracle:数据库设计三大范式
- 安装Oracle时出现环境变量Path的值大于1023的解决办法
- oracle11g安装过程提示swap size 检查失败问题
- Oracle优化02-锁和阻塞
- [置顶] Oracle Database之闪回(FLASHBACK)已删除表
- 安装Oracle时出现环境变量Path的值大于1023的解决办法
- java 查询oracle数据库所有表DatabaseMetaData的用法
- 连接Oracle时报错ORA-12541: TNS: 无监听程序
- oracle number类型,对于Java来说为什么 string 类型也是可以插入的,有时候又不行的解释
- Oracle常用函数系列之四:数值函数(2)
- Ubuntu 16.04 安装QQ以及VirtualBox安装windows和qq
- Oracle,day4,函数
- centos下载oracle的jdk时没有勾上遵守条约的解决办法,下载是替换名字
- mysql、oracle分页查询数据库
- Oracle数据库补丁管理及实战_超越OCP精通Oracle视频课程培训11
- Oracle数据库锁管理及锁分析_超越OCP精通Oracle视频课程培训10
- Oracle数据库安全审计管理_超越OCP精通Oracle视频课程培训09