24

This gives me just one row (the first one):

SELECT BLA
FROM BLA
WHERE BLA
AND ROWNUM < 2

However, I want the most recent date val; I can make that the first row this way:

SELECT BLA
FROM BLA
WHERE BLA
ORDER BY FINALDATE DESC

When I try to mix the two partial victories, though, it doesn't work - apparently the "Select the first row only" logic fires before the order by, and then the order by is subsequently ignored.

B. Clay Shannon-B. Crow Raven
  • 5,261
  • 133
  • 434
  • 811

3 Answers3

47

In 12c, here's the new way:

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

How nice is that!

Brian McGinity
  • 5,539
  • 5
  • 35
  • 46
26

This question is similar to How do I limit the number of rows returned by an Oracle query after ordering?.

It talks about how to implement a MySQL limit on an oracle database which judging by your tags and post is what you are using.

The relevant section is:

select *
from  
  ( select * 
  from emp 
  order by sal desc ) 
  where ROWNUM <= 5;
Community
  • 1
  • 1
user1593858
  • 629
  • 7
  • 12
3

You can nest your queries:

select * from (
    select bla
    from bla
    where bla
    order by finaldate desc
)
where rownum < 2
rayd09
  • 1,789
  • 16
  • 20