带连接的Oracle Update查询

时间:2014-08-20 12:01:37

标签: oracle

我知道update子句不适用于Oracle中的连接。

update table1 Pr
set code = (select t2.class_attr_value from table2 t2
where  class_attr_name = 'sample' and Pr.epcclass_id = t2.epcclass_id)

如果有人可以帮我修改我的查询以便我没有得到SQL Command错误,那么我会感激不尽。

2 个答案:

答案 0 :(得分:0)

试试这个:

UPDATE table1 Pr INNER JOIN table2 t2 
ON t2.class_attr_name = 'sample' AND Pr.epcclass_id = t2.epcclass_id 
SET Pr.code = t2.class_attr_value

答案 1 :(得分:0)

您的查询对我来说似乎没关系,我刚刚添加了表别名。您的查询将更新table1中的所有记录。你得到什么错误......?

建议,

a)除非您想要更新所有记录,否则在查询中添加where子句以避免更新所有记录......

b)如果你得到(ORA-01427:单行子查询返回多行),则意味着核心子查询(在括号内)缺少一些条件,使其每个epcclass_id只获取1行。

update table1 Pr
set Pr.code = (select t2.class_attr_value 
               from table2 t2 
               where  t2.class_attr_name = 'sample' 
               and t2.epclass_id = Pr.epcclass_id 
              );