sql >> Base de Datos >  >> RDS >> Oracle

ORA-00907 Falta el problema del paréntesis derecho:seleccione con orden por consulta de inserción interna

Ambas respuestas actuales ignoran el hecho de que usar order by y rownum en la misma consulta es inherentemente peligroso. No hay absolutamente ninguna garantía de que obtendrá los datos que desea. Si desea la primera fila de una consulta ordenada, debe use una subconsulta:

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
       ;

También puede usar una función como rank para ordenar los datos en el método que desee, aunque si tuviera dos created_on fechas que eran idénticas terminaría con 2 valores con 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
       ;