问题描述
在Oracle数据库中,可以使用rownum进行分页。相信有朋友这样使用过rownum。
例如:
写法一:
select * from emp where rownum<10;--我这个emp表没有rownum并没有这个物理字段,为什么可以使用rownum
写法二:
select * t.rownum from emp t; --这里直接报错
写法三:
select * from emp where rownum>=1;--显示emp所有的记录
写法四:
select * from emp where rownum>2;--或者大于,1,2,3......等,没有一条数据,但是emp表明明有很多数据。
写法五:
select * from (select t.* rownum rn from emp) where rn>3 and rn<6 --这里查找出来了相对应数据
这时学习Oracle的朋友估计就会破口大骂了,这破rownum怎么时而有用时而没用呢。
rownum的特点
1、 rownum永远从1开始。
2、 rownum是一个隐藏的列。
3、rownum必须要产生结果集之后,。
现在我们根据rownum的特点再来分析一下上面四种写法为什么会有的有效果,有的却没有效。
首先第一种:
select * from emp where rownum<10
也写一下oracle数据库的sql语句执行顺序。
from> on>select >where>gourp by >order by
select 和 where关键字哪个先执行?