Sql 使用内部联接修改更新以避免错误
我正在尝试使用以下语句创建父/子关系:Sql 使用内部联接修改更新以避免错误,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我正在尝试使用以下语句创建父/子关系: UPDATE (SELECT F2.FOLDERRSN NEW, F1.PARENTRSN OLD FROM AMANDA.FOLDER F1 INNER JOIN AMANDA.FOLDER F2 ON F1.PARENTRSN = F2.CONVERSIONRSN WHERE F1.FOLDERRSN BETWEEN 213010 AND 217773 AND F2.FOLDERTYPE = '
UPDATE (SELECT F2.FOLDERRSN NEW, F1.PARENTRSN OLD
FROM AMANDA.FOLDER F1
INNER JOIN AMANDA.FOLDER F2 ON F1.PARENTRSN = F2.CONVERSIONRSN
WHERE F1.FOLDERRSN BETWEEN 213010 AND 217773
AND F2.FOLDERTYPE = 'ESC') T
SET T.OLD = T.NEW
select语句起作用并显示我期望的两个值,但与update一起,我收到以下错误:
SQL错误:ORA-01779:无法修改映射到非键保留表的列
有人能帮我找到另一种方法来实现这一点吗?试试:
UPDATE AMANDA.FOLDER F1
SET F1.PARENTRSN = (
SELECT F2.FOLDERRSN
FROM AMANDA.FOLDER F2
WHERE F1.PARENTRSN = F2.CONVERSIONRSN
AND F2.FOLDERTYPE = 'ESC'
)
WHERE F1.FOLDERRSN BETWEEN 213010 AND 217773
但是,上面的查询很可能会抛出错误:ORA-01427:单行子查询返回多行
,因为与您的查询给出的ORA-01779相同的原因,它工作了!编译时没有给出错误!我感谢你的帮助!!