SQLOracle分页查询的三种方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLOracle分页查询的三种方法相关的知识,希望对你有一定的参考价值。

【SQL】Oracle分页查询的三种方法

 
采用伪列 rownum
查询前10条记录
1
2
3
4
5
6
7
8
9
10
11
[sql]
select * from t_user t where ROWNUM <10; 
按照学生ID排名,抓取前三条记录
[java]
SELECT * FROM(SELECT id,realname FROM T_USER ORDER BY id asc ) WHERE ROWNUM <=3 
分页SQL写法,从第10条记录开始,提取10条记录。
[java]
SELECT * FROM (SELECT ROWNUM rn,id,realname FROM (SELECT id,realname FROM T_USER)WHERE ROWNUM<=20) t2 WHERE T2.rn >=10; 
按照学生ID排名,从第10条记录开始,提取10条记录。
[sql]
SELECT * FROM (SELECT ROWNUM rn,id,realname FROM (SELECT id,realname FROM T_USER ORDER BY id asc)WHERE ROWNUM<=20) t2 WHERE T2.rn >=10;

 

 
【注】
1.
1
where rownum>1
 不能抓取到记录。
2.
1
where rownum between 2 and 10
 也不能抓取到记录。
 
运用分析函数
用分析函数row_number()over(ORDER BY 字段)
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
按照学生ID排名,抓取前三条记录
[sql]
SELECT * FROM(SELECT id,realname,row_number()over(ORDER BY id asc) rn FROM T_USER)WHERE rn <=3 
按照学生ID排名,从第10条记录开始,提取10条记录。
[sql]
SELECT * FROM(SELECT id,realname,row_number()over(ORDER BY id asc) rn FROM T_USER)WHERE rn BETWEEN 10 AND 20 
 
运用minus方法
从第10条记录开始,提取10条记录。
[java]
SELECT * FROM T_USER WHERE ROWNUM<20 MINUS SELECT * FROM T_USER WHERE ROWNUM<10; 
按ID排序后,从第10条记录开始,提取10条记录。
[sql]
(SELECT * FROM (SELECT * FROM T_USER ORDER BY id asc) WHERE ROWNUM<20)  MINUS( SELECT * FROM (SELECT * FROM T_USER ORDER BY id asc) WHERE ROWNUM<10);

以上是关于SQLOracle分页查询的三种方法的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)

Oracle数据库分页的三种方法

MyBatis的三种分页方式,你用过几种?

MyBatis的三种分页方式,你用过几种?

Asp.Net中的三种分页方式总结

SQL Server的三种分页方式