oracle分页查询并按照某字段进行排序的数种解决方案
方案一(对于大数据集, 会明显的影响查询效率):
SELECT *
from(
SELECT ROWNUM RN,TA.*
from(
select t.id ID, o.name YYB,u.name XM, t.MC
from tZDYSX t,tuser u,lborganization o
where t.cjr=u.id and u.orgid=o.orgcode and t.gx = 1 order by t.ID
)TA WHERE ROWNUM <= 20
)WHERE RN > 10
方案二(先选再排序, 不推荐使用):
select * from tablename
where …
and rownum<10
minus
select * from tablename
where …
and rownum<5
order by name
或写为如下形式(速度更快)
select * from (
select rownum r,a from yourtable
where rownum <= 20
order by name )
where r > 10
方案三(效率最高,推荐用此方案):
select * from (select row_number() over (order by sign_time desc) as rownumber, id, signer_name, sign_time from b_sign_product)
where rownumber between 11 and 20
相关文档:
本系列文章导航
[Oracle]高效的PL/SQL程序设计(一)--伪列ROWNUM使用技巧
[Oracle]高效的PL/SQL程序设计(二)--标量子查询
[Oracle]高效的PL/SQL程序设计(三)--Package的优点
[Oracle]高效的PL/SQL程序设计(四)--批量处理
[Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
[Oracle]高效的PL/SQL程序设计(六)- ......
Oracle函数和mysql函数比较
1. Oracle中的to_number()转换成数字;
Oracle> Select to_number(‘123’) from dual; ----- 123;
&nbs ......
Oracle笔记
l 关于TRUNC函数
SELECT
RELATED_ID ,
DOC_ID ,
CAT_ID ,
CAT_CODE ,
RELEASE_DATE ,
&n ......
我在把oracle数据导入sqlserver中时,发现在oracle中字段定义为唯一索引时,不同记录的此字段如果为空不被认为是重复的,但在sqlserver中如果此字段为唯一索引字段,不允许有2个以上的空值。郁闷。所以只好将sqlserver中的唯一索引字段手工修改为几个非空的值,但这样程序肯定要进行修改了。需要在程序中为此字段设置不重复 ......