Ambas respuestas actuales ignoran el hecho de que usar order by
y rownum
en la misma consulta es inherentemente peligroso. No hay absolutamente ninguna garantía de que obtendrá los datos que desea. Si desea la primera fila de una consulta ordenada, debe use una 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
;
También puede usar una función como rank
para ordenar los datos en el método que desee, aunque si tuviera dos created_on
fechas que eran idénticas terminaría con 2 valores con 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
;