关于oracle分页中的rownum
来源:互联网 发布:男士形象设计软件下载 编辑:程序博客网 时间:2024/05/01 16:58
前几天做分页都是很简单的select * ,用的语句是
select * from md_archive t where (rowid not in(select rowid from md_archive where rownum<5)and rownum<=5) order by id.
今天要用到条件查询了.测试了下上述语句不能用条件查询,或者说是比较复杂(因为 not in的存在).以下两个语句都可以插入条件,但是问题随之而来.
1.SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM md_archive order by id) A WHERE ROWNUM <= 10 and archno like '%m%' order by id) WHERE RN >= 5 order by id
2.select * from (select f.*, rownum rn from md_archive f where rownum<=10 and archno like '%m%' order by id) where rn>=5 order by id
两者的查询结果不一样.奥妙在哪里呢?就在select rownum的过程上.
语句1中,第一个select中是没有rownum这个字段.在第二个SELECT A.*, ROWNUM RN FROM中才形成了rownum.因为在最里层的SELECT * FROM md_archive order by id中已经按id排序过,第二层形成rownum时是按order by id后的顺序依次递增.在语句2中.由于已经在最里层形成了rownum,而且还是在order by id之前,结果就造成第二层select的时候不是按id顺寻取记录,两者结果自然不一样了.测试如下图所示.(注意rn)
语句一,二层select后的结果
语句二,最里层select后的结果
- 关于oracle分页中的rownum
- oracle中的rownum及分页
- Oracle数据库中的分页--rownum
- 关于Oracle中的rownum函数
- 关于oracle的rownum分页问题
- 关于分页,SQLServer中的top、MySql中的limit、Oracle中的rownum的区别?
- Oracle中的rownum、order by与分页
- oracle中的rownum、order by与分页
- oracle中的rownum、order by与分页
- oracle中的rownum、order by与分页
- 关于Oracle中的rownum两个使用原则
- 关于Oracle中的rownum两个使用原则
- Oracle rownum应用于分页
- Oracle rownum 分页注意事项
- Oracle rownum 分页, 排序
- Oracle rownum 分页, 排序
- Oracle rownum 分页, 排序
- [Oracle] ROWNUM和分页
- [转]计算机字符编码
- 有助于你编程而立即要做的10件事
- C++虚函数表解析(转)
- 用Apache htpasswd管理SVN帐户
- Understanding Video and Graphics Adapters
- 关于oracle分页中的rownum
- java 发送邮件的简单例子
- Delphi中实现全角转半角
- 标准的DIV CSS布局对SEO的影响
- Head First C#中文版 图文皆译 (page15)
- 调研结论:DIV+CSS为什么好?
- 未来软件是什么样子?-数据库篇(2)
- 大型网站架构演变和知识体系
- 蠕虫病毒——“木木”(Worm_MuMu.A)