sql >> Databasteknik >  >> RDS >> Oracle

ORA-00907 Saknat problem med höger parentes - välj med ordning efter invändig infogningsfråga

Båda de aktuella svaren ignorerar det faktum att du använder order by och rownum i samma fråga är i sig farligt. Det finns absolut ingen garanti för att du får den data du vill ha. Om du vill ha den första raden från en beställd sökning måste använd en underfråga:

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 också använda en funktion som rank för att beställa data i den metod du vill ha, men om du hade två created_on datum som var identiska skulle du få 2 värden 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. Ta bort ett, icke-unikt värde från en array

  2. Det går inte att använda databasen i mysql (okänd databas)

  3. Att fråga efter Postgresql med Hibernate (JPA) hittar ingen tabell

  4. Hur kräver jag ett mysql-fält?