分页查询sql语句的rn,SqlServer、Oracle实现数据分页查询显示"/>
oracle分页查询sql语句的rn,SqlServer、Oracle实现数据分页查询显示
使用数据分页的目的:随着数据库数据的增加,查询结果所需的内存也就越来越大,导致终究会不够用;另外,大量数据的返回会极大的影响查询的响应效率。因此,对查询数据进行分页,每次返回一个分页的数据,是个比较好的选择。
Ms SqlServer、Oracle实现分页的语句不同,以下为个人在项目中的总结。
1. 要分页的数据
查询所有数据的SQL语句为(后文称为原始语句):
SELECT YPXH, YPMC FROM AFC_YPXX WHERE ZXBZ = 0 ORDER BY YPXH
下面的例子中为显示该查询结果的第3页数据(每页10条),YPXH为表的主键。
2. SqlServer实现数据分页查询
SqlServer分页可以使用top关键字。
SELECT TOP 10 YPXH, YPMC FROM AFC_YPXX
WHERE YPXH NOT IN(SELECT TOP 20 YPXH FROM AFC_YPXX WHERE ZXBZ = 0 ORDER BY YPXH)
AND ZXBZ = 0 ORDER BY YPXH
要查询第3页数据(即原始语句查询结果中的第21~第30条数据),首先查询出满足条件的前2页(TOP 20)数据的主键YPXH集合;然后满足条件的语句中,YPXH不属于(NOT IN)前20条(即第21~N条数据组成的集合),取前10条就是第3页的数据了。
3. Oracle实现数据分页查询
将模型语句中“欲查询字段”和“原始语句” 直接替换就可以了。
/*分页模型语句:*/
SELECT 欲查询字段 FROM
( SELECT A.*, ROWNUM RN FROM ( 原始语句 ) A )
WHERE RN > 20 AND RN <= 30
/*分页具体语句:*/
SELECT YPXH, YPMC FROM
( SELECT A.*, ROWNUM RN FROM (SELECT YPXH, YPMC FROM AFC_YPXX WHERE ZXBZ = 0 ORDER BY YPXH) A )
WHERE RN > 20 AND RN <= 30
Oracle数据分页比较容易理解,首先将满足条件的所有语句和它们对应的ROWNUM放到一个查询集合中;然后直接根据ROWNUM取所需数据就可以了。需要注意的是ROWNUM是从1开始计数的。
更多推荐
oracle分页查询sql语句的rn,SqlServer、Oracle实现数据分页查询显示
发布评论