rownum 与order by 的执行顺序及按rownum 排序

1548年前 (2017-06-22)oracle数据库4871

  如果select语句(非嵌套查询形式的)有order by子句,则order by子句一般都是最后一步执行的。但是如果order by子句里的字段被设置了主键约束或是被设置索引了,那么order by子句执行之后,oracle系统还会重新对结果集的rownum值进行编号。


AX57P~4741DA]_)}MPP2N5X.png

上图看出,P_WEIGHT是降序并有序的。而rownum是无序的。

下图,加了rownum<=0后,按P_WEIGHT 降序,P_WEIGHT的最高值也没了


图片.png


解决方案:1,将P_WEIGHT设为主键,显然此方法不可能,如果是按主键id排序,就没有此问题了

2.嵌套查询:

select ROWNUM,P_WEIGHT from
(select ROWNUM,D.P_WEIGHT from T_SYS_POI D where D.P_STYLE = '002'  ORDER BY D.P_WEIGHT desc)
where   ROWNUM<=10

  而嵌套查询方法相比之下拥有较高的效率,主要体现在WHERE ROWNUM <= 10这句上

图片.png

本文原创,转载必追究版权。

分享给朋友:

相关文章

每次开机checking file system on d

 解决方案:点击左下角(开始)- (运行)输入(CMD)回车 - 进入CMD界面- 输入(d:)回车 - 输入(chkdsk /f)中间有空格。回车,出现提示按Y键,完成后,重启一次会检...

java将金额转化为大写金额

 private static String[] num = {"零","壹","贰","叁","肆...

多说评论框怎么用更好

 1.隐藏屏蔽掉多说评论框的版权链接代码?简单css实现:多说隐藏版权链接,在后台自定义css添加:#ds-thread #ds-reset .ds-powered-by { display...

使用Myeclipse 8.5开发基于JAX-WS的Web service实例

使用Myeclipse 8.5开发基于JAX-WS的Web service实例

 本文为Web service 开发入门篇,主要介绍在Myeclipse 8.5环境下开发Web service的服务程序和客户端程序的基本流程。 在Weblogic 11g...

freeMarker Jfinal 获取session里的值

问题:freeMaker session取值的常用格式都试过 session["xxx"],session.xxx 直接xxx 都取不出来?????解决:JFinal与Struts...

org.apache.subversion.javahl.ClientException: The working copy needs to be upgraded svn: Working cop

org.apache.subversion.javahl.ClientException: The working copy needs to be upgraded svn: Working cop

SVN更新出现问题:org.apache.subversion.javahl.ClientException: The working copy needs to be upgraded svn: W...

评论列表

萨瓦迪卡
萨瓦迪卡
8年前 (2017-06-23)

赞一个

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。