Oracle SQL 最后 n 条记录

Phi*_*hil 2 sql oracle

我已经通过使用 rownum 功能阅读了大量有关 Oracle SQL 中最后 n 条记录的文章,但就我而言,它没有给我正确的行。

我的表中有 3 列:1)消息(varchar)、mes_date(日期)和 mes_time(varchar2)。

假设里面有 3 条记录:

Hello world | 20-OCT-14 | 23:50
World Hello | 21-OCT-14 | 02:32
Hello Hello | 20-OCT-14 | 23:52
Run Code Online (Sandbox Code Playgroud)

我想获取按日期和时间排序的最后 2 条记录(第一行是最旧的,第二行是最新的日期/时间)

我正在使用这个查询:

SELECT * 
  FROM (SELECT message 
          FROM messages 
         ORDER 
            BY MES_DATE, MES_TIME DESC
       ) 
  WHERE ROWNUM <= 2 ORDER BY ROWNUM DESC;
Run Code Online (Sandbox Code Playgroud)

我没有将第 3 行作为第一行和第二行 #2,而是将第 1 行作为第 1 行,然后将第 #3 行作为第二行

我应该怎么做才能让较旧的日期/时间排在最前面,然后是最新的?

Dir*_*kNM 5

也许这有帮助:

SELECT * 
  FROM (SELECT message,
               mes_date,
               mes_time,
               ROW_NUMBER() OVER (ORDER BY TO_DATE(TO_CHAR(mes_date, 'YYYY-MM-DD') || mes_time, 'YYYY-MM-DD HH24:MI') DESC) rank
          FROM messages 
       ) 
  WHERE rank <= 2
  ORDER 
     BY rank
Run Code Online (Sandbox Code Playgroud)