Les deux réponses actuelles ignorent le fait que l'utilisation de order by
et rownum
dans la même requête est intrinsèquement dangereux. Il n'y a absolument aucune garantie que vous obtiendrez les données que vous souhaitez. Si vous voulez la première ligne d'une requête ordonnée, vous devez utiliser une sous-requête :
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
;
Vous pouvez également utiliser une fonction comme rank
pour ordonner les données dans la méthode que vous voulez, mais si vous aviez deux created_on
des dates identiques vous vous retrouveriez avec 2 valeurs avec 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
;