Oracle---分页查询笔记
Oracle分页
Oracle分页与MySQL分页:
Oracle中没有limit子句,但是有伪例:
伪例:
rowid:
返回表中行的存储地址,该地址可以唯一地标识数据库中的一行
rownum:
返回行在结果集中行的顺序号**(临时的),可以用它限制返回的行数(分页)**
分页:
根据rownum分页:
第一步,查询所有员工信息:
select * from emp;
第二步,查询10条记录的员工信息:
select em.*,rownum rn from (select * from emp) em where rownum<=10;
第三步,查询第6条至第10条员工的信息:
select * from (select em.*,rownum rn from (select * from emp) em where rownum<=10) where rn>=6;
根据rowid分页:
第一步,查询所有员工rowid及员工信息并按员工编号降序排序:
select rowid rid,em.* from emp em order by empno desc;
第二步,查询10条记录的rowid信息:(将rowid临时排序)
select rownum rn,rid from (select rowid rid,em.* from emp em order by empno desc) where rownum <= 10;
第三步,查询第6条至第10条rowid的信息:
select rid from (select rownum rn,rid from (select rowid rid,em.* from emp em order by empno desc) where rownum<=10) where rn >=6;
第四步,查询所有员工的信息并降序排序:(查询rowid是否包含其中—in)
select * from emp where rowid in(select rid from (select rownum rn,rid from (select rowid rid,em.* from emp em order by empno desc) where rownum<=10) where rn >=6) order by empno desc;