当前位置:编程学习 > JAVA >>

ROWNUM<=10和ROWNUM>0 AND ROWNUM<=10诡异输出望赐教

第一句SQL:
select s.*  from ( select this_.STCD as STCD1_0_, this_.TM as TM1_0_  from ST_RIVER_R this_ order by this_.TM desc ) s where ROWNUM>0 AND rownum <= 10


第二句SQL:
select s.*  from ( select this_.STCD as STCD1_0_, this_.TM as TM1_0_  from ST_RIVER_R this_ order by this_.TM desc ) s where  rownum <= 10


如上述,查询出的解决竟然有所不同,查询期间未有任何的填删改操作,希望大家能帮忙给个解释谢谢!!!!! --------------------编程问答-------------------- 灵光一现 ,领悟了  --------------------编程问答-------------------- 有意思。应该是SQL语句在执行时被重排的影响。

如果你有执行计划分析工具的话,可以把两者的执行计划列出来,我相信绝对是不同的,主要应该是过滤条件执行位置发生变化。


所以强调不能直接用rownum进行分页,必须先固化,再分页!

select s.* from ( 
  select this_.STCD as STCD1_0_, this_.TM as TM1_0_, rownum as rn_ from ST_RIVER_R this_ order by this_.TM desc 
) s 
where rn_>0 AND rn_<= 10
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,