Oracle排序分页备忘
来源:互联网 发布:淘宝与天猫有什么区别 编辑:程序博客网 时间:2024/05/29 11:10
多列排序
order by columnName1 asc,columnName2 desc
空值放前面:
order by columnName1 asc nulls first
空值放后面:
order by columnName1 asc nulls last
分页:
select * from (select a.*, rownum rnum from (select * from finalTableA order by id asc) a where finalTableA.field1=xxx and ... and rownum <= #{begin} + #{pageSize} )where rnum > #{begin}//#{begin}是查询的起始数据的行号//#{pageSize}每页数据个数
为什么要写三层呢?
首先,oracle分页需要借助rownum字段,rownum字段只能在结果集中取前面(top)数据,也就是只能这样写rownum<10
或rownum<=10
,绝对不能这样写rownum>10
或rownum>=10
,rownum>10
或rownum>=10
是永远取不到数据的,所以,两层是必须的。
两层写法:
select b.id,b.xp_name,b.a_rn,rownum b_rn from (select a.id,a.xp_name,rownum a_rn from ww_xcgl_xp a order by a.id asc) b where a_rn>5 and a_rn <=10 ; 或者 select b.id,b.xp_name,b.a_rn,rownum b_rn from (select a.id,a.xp_name,rownum a_rn from ww_xcgl_xp a where rownum <=10 order by a.id asc) b where a_rn>5 ;
可是经过观察,这个查询出的数据结果并不是我们想要的:
这是因为,order by 是在rownum生成之后进行的,所以会打乱rownum,最后得到的当然不是我们想要的数据。
所以,必须使用三层查询(必须使用b层表的rownum属性)来消除这种order by和rownum执行顺序的问题。
select c.* from (select b.id,b.xp_name,b.a_rn,rownum b_rn from (select a.id,a.xp_name,rownum a_rn from ww_xcgl_xp a order by a.id asc) b where rownum <=10 ) c where b_rn >5;
阅读全文
1 0
- Oracle排序分页备忘
- oracle、SQL Server、Mysql分页语句备忘
- oracle、SQL Server、Mysql分页语句备忘
- oracle、SQL Server、Mysql分页语句备忘
- oracle 排序分页混乱
- Oracle 分页排序 笔记
- Oracle排序分页方法
- Oracle rownum 分页, 排序
- ORACLE排序分页
- Oracle rownum 分页, 排序
- Oracle rownum 分页, 排序
- Oracle rownum 分页, 排序
- oracle分页排序
- oracle 排序分页混乱
- oracle分页排序
- oracle分页排序查询
- oracle 排序+分页查询sql
- oracle先排序后分页
- Map 和 IO流
- git中误提交了不想提交的文件,想要从版本库中删除的方法
- 利器而善事——记《软件工程(C编码实践篇)》学习感悟
- [Unity][JSON]读取写入玩家数据
- js跨域实例
- Oracle排序分页备忘
- 大型网站架构系列:负载均衡详解(3)
- 每天一道LeetCode-----找到一个字符串在另一个字符串出现的位置,字符串内部顺序无要求
- 网卡设置监听模式,抓取数据包
- 大型网站架构系列:负载均衡详解(4)
- 【标题党】记一个关于Redis-4.0.1版本下zslGetElementByRank函数的诡异问题
- 欢迎使用CSDN-markdown编辑器
- Qt调用Python函数
- 文件复制