我们项目中经常会用到分页的sql,下面我来总结下oracle分页的sql及思路
我们mysql处理分页时候有个关键字是limit,但是oracle中没有,那么oracle中是如何使用分页的呢?
oracle有一个伪列,叫rownum,翻译成中文就是行号的意思,也就是说oracle是用这个去控制所查询的条数
举例:
Student 表
id name
11111 | 学生一 |
22222 | 学生二 |
33333 | 学生三 |
44444 | 学生四 |
55555 | 学生五 |
66666 | 学生六 |
我们相当于创建一个新表,新表的sql如下
SELECT
T.*,
ROWNUM RN
FROM
STUDENT T
------------------------------------------------------------------------------------------
这样我们就组成一个新表,新表中有三个字段
id name rownum
11111 | 学生一 | 1 |
22222 | 学生二 | 2 |
33333 | 学生三 | 3 |
44444 | 学生四 | 4 |
55555 | 学生五 | 5 |
66666 | 学生六 | 6 |
这样就组成新的分页查询语句
SELECT
*
FROM(
SELECT
T.*,
ROWNUM RN
FROM
STUDENT T
)T1
WHERE
T1.RN<=3
AND
T1.RN>=1