Oracle
 sql >> Database >  >> RDS >> Oracle

Come utilizzare correttamente Oracle ORDER BY e ROWNUM?

Il where l'istruzione viene eseguita prima il order by . Quindi, la tua query desiderata sta dicendo "prendi la prima riga e poi ordinala per t_stamp sc ". E non è quello che intendi.

Il metodo subquery è il metodo corretto per eseguire questa operazione in Oracle.

Se desideri una versione che funzioni su entrambi i server, puoi utilizzare:

select ril.*
from (select ril.*, row_number() over (order by t_stamp desc) as seqnum
      from raceway_input_labo ril
     ) ril
where seqnum = 1

Il * esterno restituirà "1" nell'ultima colonna. Dovresti elencare le colonne singolarmente per evitarlo.