如何在订购后获得结果集中的第一行?

时间:2012-08-15 22:16:36

标签: sql oracle sql-order-by

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

SELECT BLA
FROM BLA
WHERE BLA
AND ROWNUM < 2

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

SELECT BLA
FROM BLA
WHERE BLA
ORDER BY FINALDATE DESC

当我尝试混合两个部分胜利时,它不起作用 - 显然“选择第一行”逻辑在顺序之前触发,然后顺序是后来被忽略了。

4 个答案:

答案 0 :(得分:25)

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

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

多好啊!

答案 1 :(得分:22)

此问题与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;

答案 2 :(得分:2)

您可以嵌套查询:

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

答案 3 :(得分:0)

另一种方式:

SELECT ...
FROM bla
WHERE finalDate = (SELECT MAX(finalDate) FROM bla) AND
      rownum = 1