получение только самой последней строки в oracle sql

#sql #oracle

#sql #Oracle

Вопрос:

я попробовал простой

 select date_created from smc_log_messages where rownum =1
order by date_created desc
  

и он возвращает дату, например

 15-SEP-16 10.15.49.099000000 PM
  

Однако, когда я запускаю

  select date_created from smc_log_messages 
    order by date_created desc
  

Я вижу такие данные, как

 30-SEP-16 12.39.00.006000000 AM
30-SEP-16 12.38.59.997000000 AM
  

Итак, в основном добавление rownum влияет на результаты. Я делаю что-то не так?

Комментарии:

1. вы можете просто упорядочить ее по desc

Ответ №1:

Если вам нужна самая последняя дата, используйте:

 select max(date_created)
from smc_log_messages ;
  

Если вам нужна самая последняя строка в Oracle 12C :

 select lm.*
from smc_log_messages lm
order by lm.date_created desc
fetch first 1 row only;
  

В более ранних версиях:

 select lm.*
from (select lm.*
      from smc_log_messages lm
      order by lm.date_created desc
     ) lm
where rownum = 1;
  

Ответ №2:

используйте функцию MAX только для получения последней и верхней записи: ВЫБЕРИТЕ MAX() ИЗ

это будет работать.