oracle的分页查询碰到的一个小问题

订单表。与订单信息表(多个订单信息列有同一个订单id)

查出全部订单以及其信息并依照订单分页

select * from(

select a. * , (DENSE_RANK() OVER(ORDER BY id DESC)) AS numindex from(

SELECT o. * , DENSE_RANK() OVER(ORDER BY o.id DESC) AS rn from order o

) a where rn <= 10

) where numindex > 0
查出全部订单以及其信息并依照订单信息分页
SELECT * FROM ( SELECT A.*, ROWNUM RN
FROM (SELECT * FROM order o  left join orderdetail od on o.id=od.orderid ) A WHERE ROWNUM <= 10 ) WHERE RN >= 0

rank() over,dense_rank(),row_number() 的差别

rank() over是的作用是查出指定条件后进行一个排名,可是有一个特点。假如是对学生排名。那么有用这个函数。成绩同样的两名是并列。比例如以下图1 2 2 4。

picindex=1" target="_self" style="position:relative; display:block; float:left">

dense_rank()的作用和rank()非常像,唯一的一点差别就是,领命学生的成绩并列以后,下一位同学并不空出并列所占的名次,比例如以下图1 2 2 3。

row_number()就不一样了,它和上面两种的差别就非常明显了。这个函数不须要考虑是否并列,哪怕依据条件查询出来的数值同样也会进行连续排名,例如以下图

rank() over,dense_rank(),row_number() 的使用方法具体解释

http://www.cnblogs.com/wuyisky/archive/2010/02/24/oracle_rank.html

时间: 2024-12-09 16:00:43

oracle的分页查询碰到的一个小问题的相关文章

Oracle之分页查询

Oracle之分页查询 Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句.ROWNUM <= 40和RN >= 21控制分页查询的每页的范围.

Oracle中分页查询语句

Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.Oracle分分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE

Mysql与Oracle的分页查询比较

MySql分页查询语句 下列查询语句中m代表行数的索引默认从0开始类似于pl/sql中的游标0表示从第一条开始n表示向后查询多少条数据. 例如: select * from emp limit 2,3表示查询第三条数据到第六条数据(包前不包后)也就是第三条数据包括第三条数据不包括第六条数据 也就是 3, 4,5条记录 select * from buss_stu_info limit m,n; Oracle数据库分页查询 一层分页查询: 及时数据量足够大几乎也不会受到影响查询速率足够快,一般在写

oracle 的分页查询与mysql 的分页查询

oracle 的分页查询: select * from (select o.*,rownum rn  from Persons o) where rn >40 and rn <=60 : mySQL 的分页查询: select o.*  from Persons o limit 40,20 ;              limit (偏移条数,数据条数) SQLServer :top  select top 4 * from order by hiredate      自注: 显示第一个到第

MySQL数据库分页查询,Oracle数据库分页查询,SqlServer数据库分页

DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `pass` varchar(255) NOT NULL, `sex` varchar(255) NOT NULL, `age` int(11) NOT NULL, `address` varchar(255) DEFAULT NULL, PRIMA

Oracle数据库分页查询的几种实现方法

没有Sql Server有top那么好用,但是Oracle含有隐藏的rownum列可以灵活使用,使实现分页效果,pageSize默认10行 方法一: select * from test where id not in ( select id from test where rownum <= 10) and rownum <= 10 order by id /--此方法除去前10行数据,剩下的重新排序,选取前十行,相当于第二页显示 方法二: SELECT * from test where

Oracle的分页查询

--1:无ORDER BY排序的写法.(效率最高)--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT ROWNUM AS rowno, t.* FROM emp t WHERE hire_date BETWEEN TO_DATE ('20060501', 'yyyymmdd') AND TO_DATE ('20060731', 'yyyymmdd') AND ROWNUM <= 20) table_

IOS block使用中碰到的一个小坑

1.先上段代码       __block typeof(self) tmpSelf = self; [tableview addLegendHeaderWithRefreshingBlock:^(){ [ tmpSelf initData:NO]; }]; 写的时候没怎么注意,后面测试的时候发现每次push到这个页面的时候内存就不断增大,而且比较有规律,考虑是内存泄露了,用静态和动态分析没发现有 内存泄露,但是内存就是不断的增长,后面一想是不是没释放,断点下dealloc发现果然没执行,然后各

设定CentOS的网络时碰到的一个小问题

安装了CentOS6.4,设定好网络之后,但是网络不好使. ethtool eth0报错' Settings for eth0: Cannot get device settings: No such device Cannot get wake-on-lan settings: No such device Cannot get message level: No such device Cannot get link status: No such device No data availa