2014-01-07 32 views
0

我想運行就像一個查詢:更新從內設置聯接查詢異常觸發錯誤

UPDATE I 
SET I.CAP_NAME = S.CAP_NAME 
FROM INSURED_FARMERS I 
INNER JOIN INDIAN_STATES_REGION S 
    ON UPPER(I.STATE_NAME_FI) = UPPER(S.STATE_NAME) 

但它拋出一個錯誤:SQL錯誤ORA-00933 SQL命令不就行了正確地結束: SET I.CAP_NAME = S.CAP_NAME

回答

1

我不認爲您可以使用JOIN在Oracle中編寫UPDATE語句。

UPDATE INSURED_FARMERS I 
SET I.CAP_NAME = (SELECT S.CAP_NAME 
        FROM INDIAN_STATES_REGION S 
        WHERE UPPER(I.STATE_NAME_FI) = UPPER(S.STATE_NAME)) 
WHERE EXISTS (SELECT S.CAP_NAME 
       FROM INDIAN_STATES_REGION S 
       WHERE UPPER(I.STATE_NAME_FI) = UPPER(S.STATE_NAME)) 
+1

Sinc e你更快... http://sqlfiddle.com/#!4/60d85/1 – Passerby

+0

有人指出@Passerby有兩種方法來解決這個問題。即刪除'EXISTS'會導致爲所有沒有匹配的記錄設置NULL。 – Drumbeg

1

在這裏看到:stackoverflow

你可以做兩種方式:

  1. 像有一個答案,使用內嵌視圖,如果你的表是用獨特的列連接存在
  2. 索引或主鍵(這些列UPPER(I.STATE_NAME_FI) = UPPER(S.STATE_NAME)