Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment utiliser Oracle ORDER BY et ROWNUM correctement ?

Le where l'instruction est exécutée avant le order by . Ainsi, votre requête souhaitée est de dire "prenez la première ligne, puis commandez-la par t_stamp desc ". Et ce n'est pas ce que vous avez l'intention.

La méthode de sous-requête est la méthode appropriée pour ce faire dans Oracle.

Si vous voulez une version qui fonctionne sur les deux serveurs, vous pouvez utiliser :

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

Le * externe renverra "1" dans la dernière colonne. Vous auriez besoin de lister les colonnes individuellement pour éviter cela.