Båda de aktuella svaren ignorerar det faktum att du använder order by
och rownum
i samma fråga är i sig farligt. Det finns absolut ingen garanti för att du får den data du vill ha. Om du vill ha den första raden från en beställd sökning måste använd en underfråga:
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
;
Du kan också använda en funktion som rank
för att beställa data i den metod du vill ha, men om du hade två created_on
datum som var identiska skulle du få 2 värden med 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
;