21

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
  • 1,055
  • 124
  • 399
  • 759

4 Answers4

43

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,329
  • 5
  • 33
  • 46
25

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
  • 619
  • 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,739
  • 15
  • 20
-1

An alternative way:

SELECT ...
FROM bla
WHERE finalDate = (SELECT MAX(finalDate) FROM bla) AND
      rownum = 1
elyor
  • 876
  • 8
  • 19