Kedua jawaban saat ini mengabaikan fakta bahwa menggunakan order by
dan rownum
dalam permintaan yang sama secara inheren berbahaya. Sama sekali tidak ada jaminan bahwa Anda akan mendapatkan data yang Anda inginkan. Jika Anda ingin baris pertama dari kueri terurut, Anda harus gunakan sub-kueri:
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
;
Anda juga dapat menggunakan fungsi seperti rank
untuk memesan data dalam metode yang Anda inginkan, meskipun jika Anda memiliki dua created_on
tanggal yang identik Anda akan mendapatkan 2 nilai dengan 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
;