• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Oracle中ROWNUM的使用技巧

mysql 搞代码 4年前 (2022-01-09) 20次浏览 已收录 0个评论

Oracle中ROWNUM的使用技巧 [English] 作者: fuyuncat 来源: http://www.HelloDBA.com 日期: 2009-02-14 14:54:36 ROWNUM是一种伪列,它会根据返回记录生成一个序列化的数字。利用ROWNUM,我们可以生产一些原先难以实现的结果输出,但因为它是伪列的这个特殊性,

Oracle中ROWNUM的使用技巧

[English]

作者:fuyun本文来源[email protected]搞@^&代*@码)网9cat

来源:http://www.HelloDBA.com

日期:2009-02-14 14:54:36

ROWNUM是一种伪列,它会根据返回记录生成一个序列化的数字。利用ROWNUM,我们可以生产一些原先难以实现的结果输出,但因为它是伪列的这个特殊性,我们在使用时也需要注意一些事项,不要掉入“陷阱”。下面就介绍一下它的使用技巧及注意事项。

1 特殊结果输出

利用ROWNUM,我们可以做到一些特殊方式的输出。

1.1 Top N结果输出

我们如果希望取输出结果的前面几条数据,通过ROWNUM可以轻松实现:

<code>SQL> select * from t_test4</code>
<code>  2  where rownum <= 5;</code>
<code> </code>
<code>USERNAME                          USER_ID CREATED</code>
<code>------------------------------ ---------- ---------</code>
<code>WOW                                    71 26-APR-07</code>
<code>CS2                                    70 15-JAN-07</code>
<code>3                                      69 01-NOV-06</code>
<code>DMP                                    68 12-OCT-06</code>
<code>PROFILER                               67 05-SEP-06</code>

但是,如果你希望对一个排序结果取Top N数据的话,使用ROWNUM存在一些“陷阱”,我们后面部分会介绍这些“陷阱”并且说明如何避免。

1.2 分页查询

利用ROWNUM对结果进行分页,下面返回结果中的第6到第10条记录:

<code>SQL> select * from</code>
<code>  2  (</code>
<code>  3  select a.*, rownum as rn from css_bl_view a</code>
<code>  4  where capture_phone_num = '(1) 925-4604800'</code>
<code>  5  ) b</code>
<code>  6  where b.rn between 6 and 10;</code>
<code> </code>
<code>6 rows selected.</code>
<code> </code>
<code> </code>
<code>Execution Plan</code>
<code>----------------------------------------------------------</code>
<code>   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2770 Card=2183 Bytes =7166789)</code>
<code>   1    0   VIEW (Cost=2770 Card=2183 Bytes=7166789)</code>
<code>   2    1     COUNT</code>
<code>   3    2       TABLE ACCESS (FULL) OF 'CSS_BL_VIEW' (Cost=2770 Card=2183 Bytes=1305434)</code>
<code> </code>
<code> </code>
<code>Statistics</code>
<code>----------------------------------------------------------</code>
<code>          0  recursive calls</code>
<code>          0  db block gets</code>
<code>      29346  consistent gets</code>
<code>      29190  physical reads</code>
<code>          0  redo size</code>
<code>       7328  bytes sent via SQL*Net to client</code>
<code>        234  bytes received via SQL*Net from client</code>
<code>          4  SQL*Net roundtrips to/from client</code>
<code>          0  sorts (memory)</code>
<code>          0  sorts (disk)</code>
<code>          5  rows processed</code>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle中ROWNUM的使用技巧

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址