rownum,rowid,row_number() over等区分

1.rownum
1.1为伪劣,按读取顺序加的序号,序号从1开始,数据读取顺序指的是·实际查询结果, 不含排序操作。如果对某字段记进行排序,则先查询(查询结果一般是数据插入顺序),然后对rownum进行编号,从1开始,最后再按指定字段排序,则排序后的结果,rownum可能不是顺序排列。
例如:
select rownum,name from students;(读取顺序,未排序)
rownum name
1 张
2 李
3 王
select rownum,name from students order by name;(按name 排序)
rownum name
2 李
3 王
1 张
如果排序字段带有索引,则rownum为排序后的顺序
select rownum,name from students order by name;(按name 排序,带索引)
rownum name
1 李
2 王
3 张
1.2 rownum后置查询条件只能从1开始,如rownum=1,rownum>1或者rownum<50等, rownum=2或rownum>2都属于非法
分页查询
select * from (select rownum rn, t.* from (select * from table order by name) where rownum

你可能感兴趣的:(oracle)