Oracle 分页查询Rownum
1.ROWNUM:
Oracle中的表,除了我们建表时设计的各个字段,其实还有两个字段(此处只介绍2个),分别是ROWID(行标示符)和ROWNUM(行号),即使我们使用DESCRIBE命令查看表的结构,也是看不到这两个列的描述的,因为,他们其实是只在数据库内部使用的,所以也通常称他们为伪列(pseudo column)。
2.rownum的使用
select * from table where rownum >= 2 and rownum <=4(错误,查询不到信息)
错误原因:rownum查询是,当查询第一行时,rownum=1 不符合条件,行数去除,表中下一行自动替换为rownum =1 所以说知道最后也查询不到符合 rownum >= 2 的数据
改进:
select * from
//构建新的临时表格,将rownum当作新的字段添加到临时表
(select rownum num,t.* from table t)
where num >=2 and num<=4/num between 2 and 4
或者
select * from
//可以对表格直接进行<= rownum筛选操作
( rownum num,t.* from table t where rownum <=4)
where num >=2
注意:
select rownum,* from table(错误sql,查询不到信息)
改为部分查询:
select rownum,name from table
如何根据order by 字段进行rownum 有序排列
乱序:
select rownum ,name from table order by name(rownum 不是有序排列)
改进:
select rownum,t1.name from
(select t.name from table t order by name ) t1