当前位置:网站首页 > 技术博客 > 正文

rownum是oracle特有的吗



上一篇文章我们讲:ORACLE巧用排序 查询最大值,第二大,第三大值。。。第N大值。

这里面sql经常使用到一个Oracle数据库中的一个特性ROWNUM,从英文死翻译过来就行号,正常理解就是查出来的数据,有一个额外的编码,类似于excel左侧对所有数据有一个行号标识。

因为按照一般思维,我们在获取最大值,第二大,第三大值。。。第N大值的时候,会自然的想到,对所有数据进行排序,然后根据ROWNUM=第几,自然就会获取到我们的数据。然而事实是这样吗?

我们简单的测试一下:

 
  
 
  
 
  

。。。。

我们可以发现除了第一条sql查询到了我们想要的数据,后面并没有查询出来数据,因此我们可以知道,rownum并不是简单的表示行号。只要翻阅资料,我们 经常会发现这样一个论断,rownum无法使用大于某个数字进行查询,从上面,我们也可以知道,除了0之外,rownum使用等于也是无效的。

那么rownum到底是什么呢?

rownum 是一个始终从1开始的,且符合查询结果的序列号!

rownum始终从1开始,并给select查询的结果进行编号,它不可能不存在第一行,而直接存在大于1的行数,因此,当rownum>大于1的数,或者rownum = 大于1的数的时候,这个时候,rownum无效,且结果并不存在。因而我们常用的rownum的方式是rownum<=某个数,只有取第一行数据的时候才使用rownum=1的方式。

那么如何取第二行,第三行的数据呢?

同取第二大,第三大的方法一样,对子查询数据进行限制后,保证我们要取得数据处在最后一条,然后进行倒序排序,使其置为第一条,即可使用rownum=1的方式获取到数据。

 

  • 上一篇: js点击事件没反应
  • 下一篇: js clienty
  • 版权声明


    相关文章:

  • js点击事件没反应2025-06-13 13:30:05
  • linux ar -x2025-06-13 13:30:05
  • 栅格化布局设计是什么2025-06-13 13:30:05
  • mysql触发器在哪2025-06-13 13:30:05
  • java比较好的爬虫框架2025-06-13 13:30:05
  • js clienty2025-06-13 13:30:05
  • 网件4700刷openwrt2025-06-13 13:30:05
  • oracle分区表的使用和查询2025-06-13 13:30:05
  • left join select2025-06-13 13:30:05
  • 代码对比合并工具2025-06-13 13:30:05