Как я могу получить только первую строку в наборе результатов ПОСЛЕ заказа?
Это дает мне только одну строку (первую):
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