ORACLE:有A,B两张表,两张表都有相同字段内容,但是字段名略有不同,希望能够用B表中的字段内容替换A表

update a
set a.pk_pricegroupcorp = b.pk_pricegroup from bd_cumandoc a,bd_cubasdoc b
where a.pk_cubasdoc = b.pk_cubasdoc
and a.pk_corp = '1004'
and a.pk_cubasdoc = '0001V31000000000WVHY'
pl/SQL中无法执行,提示没有正确结束。

第1个回答  推荐于2016-01-17
Oracle中Update常规写法:
update bd_cumandoc a
set a.pk_pricegroupcorp = ( select b.pk_pricegroup from bd_cubasdoc b
where a.pk_cubascod = b.pk_cubasdoc)
where exists (select 'x' from from bd_cubasdoc b
where a.pk_cubascod = b.pk_cubasdoc)
and a.pk_corp='1004'
and a.pk_cubasdoc = '0001V31000000000WVHY';
另一种写法(效率很高)
merge into bd_cumandoc a
using bd_cubasdoc b
on (a.pk_cubasdoc = b.pk_cubasdoc)
when matched then
update set a.pk_pricegroupcorp = b.pk_pricegroup
where a.pk_corp = '1004'
and a.pk_cubasdoc = '0001V31000000000WVHY';本回答被提问者采纳
第2个回答  2012-04-10
你的需求是什么,最好说清楚。两个表字段内容相同的话,替换以后还是一样的,有替换的必要吗?

另外1楼瞎扯,你写那个语句动脑了吗,会报ORA-1427的。
第3个回答  2012-04-10
update bd_cumandoc
set pk_pricegroupcorp = (select b.pk_pricegroup from bd_cumandoc a,bd_cubasdoc b
where a.pk_cubasdoc = b.pk_cubasdoc
and a.pk_corp = '1004'
and a.pk_cubasdoc = '0001V31000000000WVHY');
第4个回答  2012-04-10
truncate table a;
insert a
select * from b;
相似回答