2014-05-22 25 views
0

我試圖創建下面的語句父/子關係:修改更新與內部連接,以避免錯誤

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語句的作品,並表明我希望這兩個值,但與結合

SQL錯誤:ORA-01779:我收到以下錯誤的更新不能修改它映射到非鍵保存表中的列

誰能幫我出另一種方式來做到這一點?

回答

0

嘗試:

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: single-row subquery returns more than one row
因爲同樣的原因,您的查詢提供了ORA-01779

+0

它的工作!編譯時沒有錯誤!我感謝您的幫助!! – DEwok