sql >> Database >  >> RDS >> Oracle

ORA-00907 Probleem met haakje rechts - selecteer met volgorde door zoekopdracht in te voegen

Beide huidige antwoorden negeren het feit dat het gebruik van order by en rownum in dezelfde query is inherent gevaarlijk. Er is absoluut geen garantie dat u de gewenste gegevens krijgt. Als u de eerste rij van een geordende zoekopdracht wilt, moet u moeten gebruik een subquery:

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
       ;

Je kunt ook een functie gebruiken zoals rank om de gegevens in de gewenste methode te ordenen, maar als u twee created_on . had datums die identiek waren, zou je eindigen met 2 waarden met 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. MySQL LEFT JOIN Meerdere voorwaarden

  2. Een getal opmaken met een komma in Oracle

  3. Kerberos op C# Oracle Managed-verbinding

  4. Genereer unieke ID