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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值