我有一个没有任何唯一键列的表,我想使用自联接执行批量更新。
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:无法修改映射到非密钥保留的列 表
除了添加唯一约束之外,还有其他解决方案:)
答案 0 :(得分: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>>)