Obě aktuální odpovědi ignorují skutečnost, že použití order by
a rownum
ve stejném dotazu je ze své podstaty nebezpečné. Neexistuje absolutně žádná záruka, že získáte data, která chcete. Pokud chcete první řádek z uspořádaného dotazu, musíte použijte dílčí dotaz:
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
;
Můžete také použít funkci jako rank
k uspořádání dat způsobem, který chcete, i když pokud jste měli dva created_on
data, která byla identická, skončili byste se 2 hodnotami s 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
;