Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-00907 Problem z brakiem prawego nawiasu - wybierz z kolejnością za pomocą zapytania wstawianego wewnątrz

Obie obecne odpowiedzi ignorują fakt, że użycie order by i rownum w tym samym zapytaniu jest z natury niebezpieczne. Nie ma absolutnie żadnej gwarancji, że otrzymasz potrzebne dane. Jeśli chcesz mieć pierwszy wiersz z uporządkowanego zapytania, musisz użyj podzapytania:

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
       ;

Możesz także użyć funkcji takiej jak rank aby uporządkować dane w wybranej przez siebie metodzie, jeśli masz dwa created_on daty, które byłyby identyczne, otrzymalibyśmy 2 wartości z 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak zrobić funkcję, aby zwrócić typ wiersza z tabeli w pl/sql?

  2. Cienki sterownik SSL Oracle JDBC

  3. Sql Developer może połączyć Oracle Database 12c z TNS, ale nie może połączyć się z podstawowym

  4. Wyklucz wartość rekordu w grupie, jeśli jest obecny inny

  5. Używanie obiektu java.sql.Timestamp w zapytaniu sql