Cela me donne juste une ligne (la première):
SELECT BLA
FROM BLA
WHERE BLA
AND ROWNUM < 2
Cependant, je veux la date la plus récente; Je peux en faire la première ligne de cette façon:
SELECT BLA
FROM BLA
WHERE BLA
ORDER BY FINALDATE DESC
Lorsque j'essaie de mélanger les deux victoires partielles, cela ne fonctionne pas - apparemment, la logique "Sélectionner la première ligne uniquement" se déclenche avant l'ordre par, puis l'ordre par est ensuite ignoré.
Cette question est similaire à Comment puis-je limiter le nombre de lignes renvoyées par une requête Oracle après la commande? .
Il explique comment implémenter une limite MySQL sur une base de données Oracle qui, à en juger par vos balises et votre publication, est ce que vous utilisez.
La section pertinente est:
select *
from
( select *
from emp
order by sal desc )
where ROWNUM <= 5;
En 12c, voici la nouvelle façon:
select bla
from bla
where bla
order by finaldate desc
fetch first 1 rows only;
Comme c'est gentil!
Vous pouvez imbriquer vos requêtes:
select * from (
select bla
from bla
where bla
order by finaldate desc
)
where rownum < 2
Une manière alternative:
SELECT ...
FROM bla
WHERE finalDate = (SELECT MAX(finalDate) FROM bla) AND
rownum = 1