分页查询的实现过程
1.需要使用到Oracle中的伪列,rownum
rownum查询的是表中实际的行数,返回的是该表中所有行的序号
例如:select rownum from mytable
如果表中有十条数据,将会返回(1~10)这十行数据
2.分页查询的sql语句:
以学生表(mytable)为例:
第一步:准备需要分页的数据,可以对数据进行必要的筛选
select * from mytable
第二步:结合伪列,将第一步查询到的数据加上序号
select mt1.*,rownum ro from (第一步查询的数据) mt1
第三步:按照第二步对每行生成的序号对数据进行查询
select * from (第二步查询到的数据) where ro >=11 and ro <=20
完整的sql语句:(参考)
--简单一点的,没有对数据进行过滤
select * from (
select mt1.*,rownum ro from (
select * from mytable
) mt1
)
where ro>=11 and ro <=20;
--可以对即将分页的数据进行简单的过滤
select * from (
select mt1.*,rownum ro from (
select sno,sname,sex,age,address from mytable order by age desc
) mt1
)
where ro>=11 and ro <=20;