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

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

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

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

分享给朋友:

相关文章

linux下启动oracle实例

 启动数据库实例,分为两步:第一步,启动监听;第二步,启动数据库实例。 一、如何启动数据库实例  1.进入到sqlplus启动实例[root@localhost...

多说评论框怎么用更好

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

MyEclipse 10安装svn

MyEclipse 10安装svn

 方法一:在线安装(推荐)1.打开HELP->MyEclipse ConfigurationCenter。切换到SoftWare标签页。 2.点击Add Site 打开对话框...

Java 实现用户资料完整度的前端显示(或根据填写资料自动评分)

前端使用 Bootstrap 的进度条组件显示百分比,后台读取权重并计算信息完整度,并将计算的结果返回给前端,供页面显示。CSS1<link href="static/sc/...

dwz+jfinal 市县下拉菜单二级联动(实例)

在DWZ文档中对组合框combox的是这样描述的:在传统的select 用class 定义:class=”combox”, html 扩展:保留原有属性name,  增加了属性:ref。re...

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

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

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

评论列表

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

赞一个

发表评论

访客

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