Оба текущих ответа игнорируют тот факт, что использование order by
и rownum
в одном и том же запросе опасно по своей природе.Нет абсолютно никакой гарантии, что вы получите те данные, которые хотите.Если вам нужна первая строка из упорядоченного запроса, вы должны использовать подзапрос:
insert into my_tbl ( col1, col2 )
select data, 'more data'
from ( select data
from fir_tabl
where id = 1
order by created_on desc )
where rownum = 1
;
Вы также можете использовать такую функцию, как rank
, чтобыупорядочите данные в нужном вам методе, хотя, если бы у вас было две идентичные даты created_on
, вы бы получили 2 значения с rnk = 1
.
insert into my_tbl ( col1, col2 )
select data, 'more data'
from ( select data
, rank() over ( order by created_on desc ) as rnk
from fir_tabl
where id = 1)
where rnk = 1
;