Beide huidige antwoorden negeren het feit dat het gebruik van order by
en rownum
in dezelfde query is inherent gevaarlijk. Er is absoluut geen garantie dat u de gewenste gegevens krijgt. Als u de eerste rij van een geordende zoekopdracht wilt, moet u moeten gebruik een subquery:
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
;
Je kunt ook een functie gebruiken zoals rank
om de gegevens in de gewenste methode te ordenen, maar als u twee created_on
. had datums die identiek waren, zou je eindigen met 2 waarden met 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
;