
因为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
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
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)