sql >> Databáze >  >> RDS >> Oracle

ORA-00907 Chybějící problém s pravou závorkou - vyberte s pořadím pomocí vnitřního vkládacího dotazu

Obě aktuální odpovědi ignorují skutečnost, že použití order by a rownum ve stejném dotazu je ze své podstaty nebezpečné. Neexistuje absolutně žádná záruka, že získáte data, která chcete. Pokud chcete první řádek z uspořádaného dotazu, musíte použijte dílčí dotaz:

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
       ;

Můžete také použít funkci jako rank k uspořádání dat způsobem, který chcete, i když pokud jste měli dva created_on data, která byla identická, skončili byste se 2 hodnotami s 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. pgAdmin III :Žádné servery se nezobrazují

  2. Nastavte proměnnou prostředí (PGPASSWORD) před provedením příkazu (pg_dump) na serveru Windows SSH v Paramiko

  3. Pokud se mysql_num_rows rovná NULE, NEFUNGUJE

  4. Jak používat role, které se změnily v MySQL 8.0