oracle怎么实现分页

oracle怎么实现分页,第1张

因为Oracle数据库没有Top关键字,所以这里就不能够像微软的数据据那样 *** 作,这里有两种方法:

一种是利用相反的。

PAGESIZE:每页显示的记录数

CURRENTPAGE:当前页号

数据表的名字是:components

索引主键字是:id

select * from components where id not in(select id from components where rownum<=(PAGESIZE*(CURRENTPAGE-1))) and rownum<=PAGESIZE order by id

如下例:

select * from components where id not in(select id from components where rownum<=100) and rownum<=10 order by id

从101到记录开始选择,选择前面10条。

使用minus,即中文的意思就是减去,呵呵,这语句非常的有意思,也非常好记

select * from components where rownum<=(PAGESIZE*(CURRENTPAGE-1)) minus select * from components where rownum<=(PAGESIZE*(CURRENTPAGE-2))

如例:select * from components where rownum<=10 minus select * from

一种是利用Oracle的rownum,这个是Oracle查询自动返回的序号,一般不显示,但是可以通过select rownum from [表名],可以看到,是从1到当前的记录总数。

select * from (select rownum tid,components.* from components where rownum<=100) where tid<=10

SELECT *

FROM (SELECT a.*, ROWNUM rn

FROM (SELECT * FROM zs_family) a

WHERE ROWNUM <= 105)

WHERE rn BETWEEN 1 AND 5

-- 1 AND 5 采用动态SQL传参就行。下一页就是6到10,直到101到105

通过ROWNUM来实现

1.

查询前10条记录

SELECT

*

FROM

TestTable

WHERE

ROWNUM

<=

10

2.

查询第11到第20条记录SELECT

*

FROM

(SELECT

TestTable.*,

ROWNUM

ro

FROM

TestTable

WHERE

ROWNUM

<=20)

WHERE

ro

>

10

3.

Oracle

分页和排序:按照name字段升序排列后的前10条记录

SELECT

*

FROM

(SELECT

*

FROM

TestTable

ORDERY

BY

name

ASC)

WHERE

ROWNUM

<=

10

4.

按照name字段升序排列后的第11到第20条记录

SELECT

*

FROM

(SELECT

tt.*,

ROWNUM

ro

FROM

(SELECT

*

FROM

TestTable

ORDER

BY

name

ASC)

tt

WHERE

ROWNUM

<=20)

WHERE

ro

>

10


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/9992034.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存