Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-00907 Problem mit fehlender rechter Klammer – Auswahl mit Reihenfolge durch Abfrage zum Einfügen von Innenseiten

Beide aktuellen Antworten ignorieren die Tatsache, dass order by verwendet wird und rownum in derselben Abfrage ist von Natur aus gefährlich. Es gibt absolut keine Garantie, dass Sie die gewünschten Daten erhalten. Wenn Sie die erste Zeile einer geordneten Abfrage möchten, müssen Sie das müssen Verwenden Sie eine Unterabfrage:

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
       ;

Sie können auch eine Funktion wie rank verwenden um die Daten in der gewünschten Methode zu ordnen, obwohl Sie zwei created_on hatten Daten, die identisch waren, würden Sie mit 2 Werten mit rnk = 1 enden .

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
       ;