1.数据表结构
表名
Authoring
字段
authoringId NUMBER PRIMARY KEY,
name VARCHAR(50) NOT NULL,
startDate Date
2.分页:以startDate逆序分页
SELECT *
FROM (SELECT a.*, row_number() OVER(ORDER BY a.STARTDATE DESC) rownumber
FROM AUTHORING a) tmp
WHERE tmp.rownumber between 1 and 5;
SELECT *
FROM (SELECT tmp.*, rownum rownumber
FROM (SELECT a.* FROM AUTHORING a ORDER BY STARTDATE DESC) tmp) rslt
WHERE rslt.rownumber between 1 and 5;
注: ORDER BY 是对where过滤之后的结果在缓存内进行order,
根据rownum的原理,order之前rownum的值已经确定,
所以分页时需先order by 然后再取rownum的值
select *
from (SELECT tmp.*, rownum rownumber
FROM (SELECT a.* FROM AUTHORING a ORDER BY STARTDATE DESC) tmp
where rownum <= 5) rslt
WHERE rslt.rownumber >= 1;
SELECT tmp.*
FROM (SELECT a.* FROM AUTHORING a ORDER BY STARTDATE DESC, Authoringid) tmp
WHERE rownum <= 6;
(第6条记录的authoringId=1076328)
SELECT tmp.*
FROM (
SELECT a.STARTDATE, a.Authoringid, a.name
FROM AUTHORING a
WHERE a.startdate < (SELECT a.startdate FROM AUTHORING a WHERE a.AUTHORINGID = 1076328)
UNION
SELECT a.STARTDATE, a.Authoringid, a.name
FROM AUTHORING a W
HERE a.startdate = (SELECT a.startdate FROM AUTHORING a WHERE a.AUTHORINGID = 1076328) and a.authoringid >= 1076328
ORDER BY STARTDATE DESC, Authoringid
) tmp
WHERE rownum <= 6;
此方法不能准备定位于某一页,只支持previous和next,每次需要多取1条数据用于判断是否存在下一页。
分享到:
相关推荐
Oracle 分页实例 带分页控件用法 Oracle 实现数据列表分页。
java实现oracle分页策略完整版,可当做参考类使用,有详细注释,适合初学者。
Oracle分页查询Oracle分页查询Oracle分页查询Oracle分页查询
oracle分页存储过程,oracle分页存储过程
Oracle分页(limit方式的运用)Oracle分页(limit方式的运用)
ORACLE分页查询效率
oracle分页查询语句sql
完整的java+oracle 分页代码,供初学者使用
oracle分页查询并返回总记录数据的存储过程
oracle分页,比较简单很好懂,能够清楚知道oracle分页机制
oracle&jsp简单实现分页,注意到Oracle包
Oracle的分页查询语句以及Oracle分页的存储过程
oracle分页查询常用方法 提供三种方法
Oracle分页存储过程,里面包含C#调用代码实例;
Oracle分页SQL,3种分页SQL方法比较
Oracle All 添加 修改 更新 Oracle分页 emp表 存储过程实现
解决Oracle分页查询中排序与效率问题解决Oracle分页查询中排序与效率问题解决Oracle分页查询中排序与效率问题解决Oracle分页查询中排序与效率问题
Oracle 存储过程 Oracle分页 oracle分页
Oracle分页详解