Oracle分页查找

分页查找是为了在大部分情况下,不需要查找出全部的数据,只需要显示部分即可。因为查找出全部的数据会占用很大的服务器资源,十分影响性能,而且没这个必要。比如微博留言,如果一个微博有几千条留言,完全没必要全部加载出来,只加载前面十几条,用户刷到后面再加载十几条就可以,这就是分页查询的作用。

Oracle分页查询:

SELECT * FROM   
(  
SELECT t.*, ROWNUM RN   
FROM (SELECT * FROM t_role) t   
WHERE ROWNUM <= 40  
)  
WHERE RN >= 21  

上面是最简单的一个分页查找,查找的是行数大于等于21,小于等于40的数据。

里面有三个select,

第一个select是为了将表中的数据全部查找出来,以便给下一个select查找出总行数,查找的子表用别名t

第二个select,不仅得查找出表中的全部数据t.*,还得查找出表中的一个新列,ROWNUM,会给每一行按顺序从1开始标记,同时确定了分页查询的上限,ROWNUM用别名RN代替,这是必须的一个操作,因为在第三个SELECT查询的时候会利用RN来确定分页查询的下限。

第三个select,就是最终查找的结果,前面主要是为了获得ROWNUM并确定上限,这里确定了下限,最终的查找结果会有RN,因为前面的子表里会有列RN,

如果不想要的话可以选择自己想要的结果,如:

SELECT ROLE_ID, ROLE_NAME, NOTE FROM   
(  
SELECT t.*, ROWNUM RN   
FROM (SELECT * FROM t_role) t   
WHERE ROWNUM <= 40  
)  
WHERE RN >= 21  

猜你喜欢

转载自blog.csdn.net/weixin_42070871/article/details/84995403