sql >> Database teknologi >  >> RDS >> Oracle

ORA-00907 Manglende problem med højre parentes - vælg med rækkefølge ved indvendig indsæt forespørgsel

Begge de aktuelle svar ignorerer det faktum, at brug af order by og rownum i den samme forespørgsel er i sagens natur farlig. Der er absolut ingen garanti for, at du får de data, du ønsker. Hvis du vil have den første række fra en bestilt forespørgsel, skal du brug en underforespørgsel:

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
       ;

Du kan også bruge en funktion som rank for at bestille dataene i den metode, du ønsker, men hvis du havde to created_on datoer, der var identiske, ville du ende med 2 værdier med 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
       ;


  1. JSON_QUERY() Funktion i Oracle

  2. PL/SQL - Eksempel på hæv applikationsfejl

  3. Gettext eller databaseoversættelse

  4. Vælg 2 kolonner og flet data