Oracle中的SQL分页查询原理和方法详解
转载请注明出处:http://www.52php.cn/article/p-zfqyiyzx-beo.html,谢谢! 本文分析并介绍Oracle中的分页查找的方法。 oracle中的表,除了我们建表时设计的各个字段,其实还有两个字段(此处只介绍2个),分别是ROWID(行标示符)和ROWNUM(行号),即使我们使用DESCRIBE命令查看表的结构,也是看不到这两个列的描述的,因为,他们其实是只在数据库内部使用的,所以也通常称他们为伪列(pseudo column)。 下面我们先建表并添加一些数据来验证上面的说明。 建表: 插入数据: 使用describe命令查看表结构:
可以看到,确实只有建表时的两个字段。 但我们可以查询的时候,查找到伪列的值: 结果: 这个rowid我们一般用不到,Oracle数据库内部使用它来存储行的物理位置,是一个18位的数字,采用base-64编码。 而这个rownum,我们也正是使用它来进行分页查询的,它的值,就是表示的该行的行号。
于是,我们理所当然会想到如下语句查询第2页的数据(每页2条数据,页码从1开始,所以起始行的行号为(页码-1)*每页长度+1=3,终止行的行号为页码*每页长度=4): 但有了上面的嵌套查询的经验,这里也可以好好应用一下,怎么做呢:先查找出排序好的结果集,然后应用上面的方法得到最终结果,sql如下: uofromOK,结果正确。 其实连表查询之类的,也是差不多的,多点嵌套而已,掌握了原理,随便分析一下就能写出对应的SQL了,而编写SQL时,我们也得动动脑子,毕竟SQL也是由优劣之分的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |