分页查询
上次笔记学到分页查询的三种方式:rowid、分析函数和 rownum,这次笔记重点学 rownum 方式的分页查询。
1. 查询 emp 表为例
SELECT * FROM emp;
2. 显示 rownum (由系统自己分配)
SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e;
rn 相当于 Oracle 分配的行 ID 号
3.查询出 6-10 条记录
a.先查出 1-10 条记录
SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e WHERE ROWNUM <= 10; 不是后面直接加上 and rownum >=6 !
b. 后查出 6-10 条记录 (再包一层 select 加 where rn >= 6)
SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e WHERE ROWNUM <= 10) WHERE rn >= 6;
4. 查询的变化
a. 指定查询列,只需修改最里层的子查询
查询员工的编号和工资,第 6 -10 条数据
SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT ename, sal FROM emp) e WHERE ROWNUM <= 10) WHERE rn >= 6;
b. 排序查询,也只需修改最里层的子查询
按工资排序后查询,第 6 -10 条数据
SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT ename, sal FROM emp ORDER BY sal) e WHERE ROWNUM <= 10) WHERE rn >= 6;
今天笔记做到这,后续有空继续。