И двата текущи отговора пренебрегват факта, че използването на order by
и rownum
в същата заявка е опасно по своята същност. Няма абсолютно никаква гаранция, че ще получите данните, които искате. Ако искате първия ред от подредена заявка, трябва използвайте подзаявка:
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
;
Можете също да използвате функция като rank
за да подредите данните в метода, който искате, но ако сте имали два created_on
дати, които са били идентични, ще получите 2 стойности с 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
;