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

1549年前 (2017-06-22)oracle数据库7607

  如果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

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

分享给朋友:

相关文章

java.lang.ClassNotFoundException: oracle.jdbc.driver.OralceDriver

 java.lang.ClassNotFoundException: Oracle.jdbc.driver.OracleDriver这个错误;原因可能是 少了驱动 ,少包class...

程序员为什么不炫富

程序员为什么不炫富

 提到互联网,尤其是互联网工程师们,人们往往会想到两个词:“高薪”和“高压”。在知乎上“为什么很少见工资高的程序员炫富?”的问题下,一个得票很高的答案是:“乐意炫富的人,不是因为有钱,而是因为付出的少...

office 2010安装、激活、激活工具下载

office 2010安装、激活、激活工具下载

 首先下载好工具包(包括office 2010安装程序、激活工具及Microsoft .NET Framework 4.0),点击工具包下载进行下载;安装好office 2010。如果是wi...

如果有人夸你漂亮,你会如何回复

如果有人夸你漂亮,你会如何回复

       因为长得好看,会经常被别人夸长得漂亮,该如何机智而又优雅的回复,才能表达出谦虚而又不失敷衍的??如果是对方谦虚:谢谢,你也很漂...

如果总是有人说你瘦,如何神回复

如果总是有人说你瘦,如何神回复

恩,我不做领导很多年了邓小平爷爷 也很瘦哦, 并不影响成为一个伟大的男人我这是高寿(瘦)别说我瘦,我只是胖的不明显而已!我就是瘦着玩玩,谁像你胖得那么认真。嗳,你还别说,你胖了! 恩 ,真的!真的吗?...

MySQL、Oracle数据库字段分别设置默认系统时间

MySQL设置方法:1、将字段类型设为  TIMESTAMP 2、将默认值设为  CURRENT_TIMESTAMPMySQL 脚本实现用例--添加CreateTime 设置默认时...

评论列表

发表评论

访客

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