-1

我有一个没有任何唯一键列的表,我想使用自联接执行批量更新。

Update 
(
select t1.Col1 col1, t2.col1 col2
from table t1
inner join table t2 on <join condtn>
where <condtn>
)
Set col1 = col2

但由于表没有唯一的键列,它给出了错误:

ORA-01779: 无法修改映射到非键保留表的列。

除了添加唯一约束之外还有其他解决方案吗:)

4

1 回答 1

3

您应该能够重构查询以进行相关更新

UPDATE table t1
   SET col1 = (SELECT col1
                 FROM table t2
                WHERE t1.<<some column>> = t2.<<some column>>)
 WHERE EXISTS( SELECT 1
                 FROM table t2
                WHERE t1.<<some column>> = t2.<<some column>>)
于 2012-04-17T11:45:36.330 回答