赞
踩
快速通道:
select rownum rn, s.* from student s
查询结果即可作为子表提供给下一步查询
select * from (select rownum rn, s.* from student s) where rn>=1 and rn<=5;
select * from (select rownum rn, s.* from student s) where rn>=6 and rn<=10
注意!!这里子表的rownum一定需要重命名,不然外表查的是自己的伪劣值rownum遇到大于判断会出现空表!
起始记录号(从1开始)为:(n-1)*size
结束记录号为:n*size
那么sql语句为:
select * from (select rownum rn, 表名.* from 表名) where rn>=(n-1)*size and rn<=n*size;
注意!!这里子表的rownum一定需要重命名,不然外表查的是自己的伪劣值rownum遇到大于判断会出现空表!
更特殊的是要求先对某一字段进行排序后再分页
因为order by语句是最后执行,此时按照上面的sql语句查询时会出错:
select rownum, s.* from student s order by age
解决办法是中间再加一层嵌套取排序后的rownum值,如下:
select *
from (select rownum rn,s.*
from (select * from student s order by age) s)
where rn>5 and rn<=10
从内到外依次进行按年龄进行排序/对排序后的表取rownum值/进行分页,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。