Cả hai câu trả lời hiện tại đều bỏ qua thực tế là sử dụng order by
và rownum
trong cùng một truy vấn vốn đã rất nguy hiểm. Hoàn toàn không có gì đảm bảo rằng bạn sẽ nhận được dữ liệu mà bạn muốn. Nếu bạn muốn hàng đầu tiên từ một truy vấn có thứ tự, bạn phải sử dụng truy vấn phụ:
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
;
Bạn cũng có thể sử dụng một hàm như rank
để sắp xếp dữ liệu theo phương pháp bạn muốn, mặc dù nếu bạn có hai created_on
ngày trùng nhau, bạn sẽ nhận được 2 giá trị bằng 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
;