Ambas as respostas atuais ignoram o fato de que usar
order by
e rownum
na mesma consulta é inerentemente perigoso. Não há absolutamente nenhuma garantia de que você obterá os dados desejados. Se você deseja a primeira linha de uma consulta ordenada, deve use uma subconsulta: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
;
Você também pode usar uma função como
rank
para ordenar os dados no método desejado, mas se você tivesse dois created_on
datas que fossem idênticas você terminaria com 2 valores com 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
;