使用与 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'
错误:
- 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
);
我正在尝试使用同一 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'
错误:
- 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
);