Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用内部联接修改更新以避免错误_Sql_Oracle_Oracle Sqldeveloper - Fatal编程技术网

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相同的原因,它工作了!编译时没有给出错误!我感谢你的帮助!!