当前位置:   article > 正文

oracle之分页语句_oracle分页语句怎么写

oracle分页语句怎么写


select 列

form 表

where 子句

group by 列

having 子句

order by

注意:
1.当使用group by时select后的列不能随便写,必须是被分组的列或包含在聚合函数
2.where子句不能以聚合函数作为搜索条件但可以为聚合函数取别名后使用 与组无关
3.having子句与组有关


oracle 分页一共三种方式

1.rownum分页(rownum oracle显示行id号,且一次查询只能用一次)
如以emp表为列,显示第6条到第10条的记录

第一步:查询所有
select * from emp

第二步:将第一步作为一个子查询e1,使用rownum 显示行id
 select e1.*,rownum rn from (select * from emp) e1;

第三步:使用where子句查询前10条记录
select e1.*,rownum rn from (select * from emp) e1 where rownum<=10;

第四步:将三步作为一个子查询e2,查询第6条到第10记录
select e2.* from (select e1.*,rownum rn from (select * from emp) e1 where rownum<=10) e2 where rn>=6;

注意:不管是查询指定列,或是排序,都只需修改最里层的子查询即第一步中查询

使用rownum分页方式二
select * from (select * from emp where rownum<=第几页*当前页显示的条数) where 任意字段 not in (select 任意字段 from emp where rownum<=(第几页-1)*当前页显示的条数);


2.使用rowid分页
第一步:
select rowid rid from emp;
第二步:
select rownum rn,rid from (select rowid rid from emp)where rownum<=10;
第三步:
select rid from (select rownum rn,rid from (select rowid rid from emp)where rownum<=10) where rn>=6;
第四步:
select * from emp where rowid in(select rid from (select rownum rn,rid from (select rowid rid from emp)where rownum<=10) where rn>=6);


3.使用分析函数
select * from (select e.*,row_number() over(order by sal desc) e1 from emp e) where e1<=10 and e1>=6;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/475420
推荐阅读
相关标签
  

闽ICP备14008679号