如何在oracle中更新以为结果集设置常量名称

时间:2014-12-12 16:08:44

标签: sql oracle oracle-sqldeveloper

我有这个代码(它有效):

update CES.SCHEME_ELEMENT se
set se.NAME = (
select ni.NAME_WT from CES.NI_CES ni
where se.FK_VALUE = ni.ID_NI_WORK and 
se.SCHEME_ID = 11 and se."TYPE" = 'zn' );

并且不明白,为什么我不能做这样的事情

update CES.NI_CES ni
set ni.NAME_WT = 'ЗР'
where ni.ID_NI_WORK = (
select se.FK_VALUE from CES.SCHEME_ELEMENT se
where  se.SCHEME_ID = 11 and se."TYPE"='zn');

OR

UPDATE
(SELECT ni.NAME_WT nw
 FROM CES.NI_CES ni
 INNER JOIN CES.SCHEME_ELEMENT se
 ON se.FK_VALUE = ni.ID_NI_WORK
 WHERE se.SCHEME_ID = 11 and se."TYPE"='zn'
) t
SET t.nw = 'ЗР';

看到这个Update statement with inner join on Oracle

Thnks

1 个答案:

答案 0 :(得分:2)

您可以使用in运算符代替=运算符进行子查询:

update CES.NI_CES ni
set ni.NAME_WT = 'ЗР'
where ni.ID_NI_WORK IN ( --HERE!
select se.FK_VALUE 
from CES.SCHEME_ELEMENT se
where  se.SCHEME_ID = 11 and se."TYPE"='zn');