使用与 ORACLE 相同的 table 的更新

Using update from the same table with ORACLE

我正在尝试使用同一 table 中的另一个字段更新我的 table 中的一个字段,但是当我 运行 下面的更新时,我收到一个错误

update f1
set f1.usu_cgcstr = f2.cgccpf
from E095for as f1
join E095for as f2
on f1.codfor = f2.codfor
where  f1.usu_intot = 'N'

错误:

  1. 00000 - "SQL command not properly ended"

那么我该如何进行此更新?

语法错误;使用 merge:

merge into f1
  using e095for f2
  on (f1.codfor = f2.codfor)
  when matched then update set f1.usu_cgcstr = f2.cgccpf
  where f1.usu_intot = 'N';

或者,如果你想要 update:

update e095for f1 set
  f1.usu_intot = (select f2.cgccpf
                  from e095for f2
                  where f2.codfor = f1.codfor
                 )
  where f1.usu_intot = 'N'
    and exists (select null from e095for c
                where c.codfor = f1.codfor
               );