Как я могу получить только первую строку в наборе результатов ПОСЛЕ заказа?

Это дает мне только одну строку (первую):

SELECT BLA
FROM BLA
WHERE BLA
AND ROWNUM < 2

Однако мне нужна самая последняя дата val; Я могу сделать эту первую строку следующим образом:

SELECT BLA
FROM BLA
WHERE BLA
ORDER BY FINALDATE DESC

Когда я пытаюсь смешивать две частичные победы, это не работает - по-видимому, логика "Выбрать первую строку" срабатывает перед порядком, а затем порядок затем игнорируется.

Ответ 1

Этот вопрос похож на Как ограничить количество строк, возвращаемых запросом Oracle после заказа?.

В нем рассказывается о том, как реализовать ограничение на MySQL в базе данных оракула, которое, судя по вашим тегам и сообщению, - это то, что вы используете.

Соответствующий раздел:

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

Ответ 2

В 12c здесь новый способ:

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

Как это хорошо!

Ответ 3

Вы можете вложить свои запросы:

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

Ответ 4

Альтернативный способ:

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