我是靠谱客的博主 追寻花瓣,最近开发中收集的这篇文章主要介绍sql如何取前几行_oracle取前几行|中间几行|后几行,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

oracle中取指定行是利用一个参数rownum,例如,取前10行数据的代码就是:

select * from tablea where rownum < 10

那么取中间几行是不是就把rownum < 10改为rownum > 10 and rownum < 20呢?

尝试运行,会发现有异常!!!!然后,我们就需要学习rownum 的真正含义,以及如何使用了。

先好好理解 rownum 的意义吧。因为ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。所以没办法期望得到下面的结果集:

11 aaaaaaaa

12 bbbbbbb

13 ccccccc

.................

rownum >10 没有记录,因为第一条不满足去掉的话,第二条的rownum又成了1,所以永远没有满足条件的记录。或者可以这样理解:rownum是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类 推。如果你用>,>=,=,between...and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除, 接着取下条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。

任何时候想把 rownum = 1 这条记录抛弃是不对的,它在结果集中是不可或缺的,少了rownum=1 就像空中楼阁一般不能存在,所以你的 rownum 条件要包含到 1.

如果就是想要用 rownum > 10 这种条件的话,就要用嵌套语句,把 rownum 先生成,然后对他进行查询。

select * from (select rownum as rn,t1.* from tablea t1 where ...) tab where tab.rn >10

类似的如果想要取中间几行数据的话,sql语句就应该这么写:select * from (selet rownum as rn,t1.* from tablea t1 where ...) tab where tab.rn >10 and tab.rn < 20

最后

以上就是追寻花瓣为你收集整理的sql如何取前几行_oracle取前几行|中间几行|后几行的全部内容,希望文章能够帮你解决sql如何取前几行_oracle取前几行|中间几行|后几行所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部