Begge de aktuelle svar ignorerer det faktum, at brug af order by
og rownum
i den samme forespørgsel er i sagens natur farlig. Der er absolut ingen garanti for, at du får de data, du ønsker. Hvis du vil have den første række fra en bestilt forespørgsel, skal du brug en underforespørgsel:
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 også bruge en funktion som rank
for at bestille dataene i den metode, du ønsker, men hvis du havde to created_on
datoer, der var identiske, ville du ende med 2 værdier 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
;