注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

融智技术学院

融智技术学院163分站,为广大好友提供更多的帮助

 
 
 

日志

 
 

【数据库每日一问】我要如何限制订货后由Oracle查询返回的行数?  

2014-03-21 16:28:08|  分类: 数据库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

问:

Oracle查询有没有一种方法,像MySQL的限制条件?

MySQL中,我可以这样做:

  • select *
  • from sometable
  • order by name
  • limit 20,10

获得2130行(跳过前20,显示接下来的10行)。顺序后这些汗被选定,所以它真正开始在第20个名称的字母。

Oracle中,人们提到的唯一的就是ROWNUM伪列,但它在排序之前已经赋值了,这意味着这样的:

  • select *
  • from sometable
  • where rownum <= 10
  • order by name 

将返回一组随机的按名称排序十行,这通常不是我想要的。它也不允许用于指定一个偏移量。

答:

您可以使用子查询这个像

  • select *
  • from 
  • ( select *
  •   from emp
  •   order by sal desc )
  • where ROWNUM <= 5;

也可以通过http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

在甲骨文/ AskTom获取更多信息。 

更新:如果要限制的结果既有上界也有下界事情变得更加复杂了一点 

  • select * from
  • ( select a.*, ROWNUM rnum from
  •   ( <your_query_goes_here, with order by> ) a
  •   where ROWNUM <= :MAX_ROW_TO_FETCH )
  • where rnum  >= :MIN_ROW_TO_FETCH;

(从指定AskTom-文章中复制)

  评论这张
 
阅读(7)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017