【问题标题】:How can I get just the first row in a result set AFTER ordering?如何在排序后仅获得结果集中的第一行?
【发布时间】:2012-08-15 22:16:36
【问题描述】:

这给了我一行(第一行):

SELECT BLA
FROM BLA
WHERE BLA
AND ROWNUM < 2

但是,我想要最近的日期 val;我可以这样设置第一行:

SELECT BLA
FROM BLA
WHERE BLA
ORDER BY FINALDATE DESC

但是,当我尝试混合两个部分胜利时,它不起作用 - 显然“仅选择第一行”逻辑触发 before order by,然后 order by随后被忽略。

【问题讨论】:

  • 你为什么不简单地使用 group by (你会得到第一行)?

标签: sql oracle sql-order-by


【解决方案1】:

在 12c 中,这是新的方式:

select bla
  from bla
 where bla
 order by finaldate desc
 fetch first 1 rows only; 

那太好了!

【讨论】:

    【解决方案2】:

    这个问题类似于How do I limit the number of rows returned by an Oracle query after ordering?

    它讨论了如何在 oracle 数据库上实现 MySQL 限制,根据您的标签和帖子判断您正在使用什么。

    相关部分是:

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

    【讨论】:

      【解决方案3】:

      您可以嵌套查询:

      select * from (
          select bla
          from bla
          where bla
          order by finaldate desc
      )
      where rownum < 2
      

      【讨论】:

        猜你喜欢
        • 2011-03-14
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-29
        • 2020-02-10
        • 1970-01-01
        相关资源
        最近更新 更多