Obie obecne odpowiedzi ignorują fakt, że użycie order by
i rownum
w tym samym zapytaniu jest z natury niebezpieczne. Nie ma absolutnie żadnej gwarancji, że otrzymasz potrzebne dane. Jeśli chcesz mieć pierwszy wiersz z uporządkowanego zapytania, musisz użyj podzapytania:
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
;
Możesz także użyć funkcji takiej jak rank
aby uporządkować dane w wybranej przez siebie metodzie, jeśli masz dwa created_on
daty, które byłyby identyczne, otrzymalibyśmy 2 wartości z 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
;