oracle order by 和 rownum<1结果失败问题解决并且 fetch first很好的解决

#在oracle中如下所示

SQL> select max(sequence#) from v$archived_log order by sequence#;

MAX(SEQUENCE#)
--------------
       193

#使用如下字句查询时候

SQL> select sequence# from v$archived_log where rownum<4 order by sequence# desc;

 SEQUENCE#
----------
       140
       139
       138

出现结果和实际情况不符

可以用以下两种办法解决

SQL> select * from (select sequence# from v$archived_log order by sequence# desc) where rownum<4;

 SEQUENCE#
----------
       193
       192
       191

第二种

SQL> select sequence# from (select t.*,row_number() over(order by sequence# desc) rn from v$archived_log t) where rn<4;

 SEQUENCE#
----------
       193
       192
       191

12c之后推出了fetch first 简单实用

SQL> select sequence# from v$archived_log order by sequence# desc fetch first 3 rows only;

 SEQUENCE#
----------
       193
       192
       191

很简单具体其他用法可以查看官网

posted @   蚌壳里夜有多长  阅读(227)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示