Oracle---分页查询笔记

Oracle分页

Oracle分页与MySQL分页:

Oracle---分页查询笔记

Oracle中没有limit子句,但是有伪例:

伪例:

rowid:

返回表中行的存储地址,该地址可以唯一地标识数据库中的一行

rownum:

返回行在结果集中行的顺序号**(临时的),可以用它限制返回的行数(分页)**

分页:

根据rownum分页:

第一步,查询所有员工信息:

select * from emp;
Oracle---分页查询笔记

第二步,查询10条记录的员工信息:

select em.*,rownum rn from (select * from emp) em where rownum<=10;
Oracle---分页查询笔记

第三步,查询第6条至第10条员工的信息:

select * from (select em.*,rownum rn from (select * from emp) em where rownum<=10) where rn>=6;
Oracle---分页查询笔记

根据rowid分页:

第一步,查询所有员工rowid及员工信息并按员工编号降序排序:

select rowid rid,em.* from emp em order by empno desc;
Oracle---分页查询笔记

第二步,查询10条记录的rowid信息:(将rowid临时排序)

select rownum rn,rid from (select rowid rid,em.* from emp em order by empno desc) where rownum <= 10;
Oracle---分页查询笔记

第三步,查询第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;
Oracle---分页查询笔记

第四步,查询所有员工的信息并降序排序:(查询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;
Oracle---分页查询笔记