从内部联接查询抛出错误更新集

时间:2014-01-07 07:11:01

标签: oracle

我想运行如下的查询:

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

见这里:stackoverflow

你可以两种方式:

  1. 就像有一个存在的答案
  2. 如果您的表通过具有唯一索引或主键的列(这些列UPPER(I.STATE_NAME_FI) = UPPER(S.STATE_NAME))连接,则使用内联视图