oracle数据库的分页查询——rownum

说道分页查询大家想到的肯定是排序,条件查询是吧!
我来说一个oracle数据库中特有的关键字 rownum
rownum:这个表示的是行号,从一开始,依次递增, 他不能跳着走rownum只能单独使用 不能加前后缀。
首先说一个简单的查询:

//查询emp表,rownum表示的是行号
select rownum, e.* from emp e 
//查询emp表 根据工资排序
select * from emp order by sal desc ;

在这里插入图片描述
一共十四条数据,如何使用分页查询,每页五条数据,查询出第二页的数据呢?
在这里插入图片描述
你肯定是这样的想的,不是有行号了吗,直接查询排序后的第六条到第十条不就行了。看到他排序后的行号你就知道了,他是select查询后的行号,不是排序后的
在这里插入图片描述
二且他还不能跳这走

//查询出前十条,这种没问题
    select rownum as rown, e.* from(
    					select * from emp order by sal desc
    			) e where rownum<11 ;

//想查询第六条到第十条只需要从第五条开开始就好了,但是这种是不行的。因为roenum不能跳,所以只能从1开始,所以下面这种是不行的,会报错
	select rownum as rown, e.* from(
					select * from emp order by sal desc
			) e where rownum<11 and rownum>5

在这里插入图片描述

解决方法:只需要在嵌套一个查询就可解决不能从中间选取的问题了

-- emp表倒叙排列后,每页五条 ,查询第二页
select * from(
			select rownum as rown, e.* from(
					select * from emp order by sal desc
			) e where rownum<11 
	) where rown>5
;

在这里插入图片描述

发布了81 篇原创文章 · 获赞 26 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_44411569/article/details/101265561