来自内部连接查询的更新集抛出错误 [重复]
Posted
技术标签:
【中文标题】来自内部连接查询的更新集抛出错误 [重复]【英文标题】:update set from inner join query thowing error [duplicate] 【发布时间】:2014-01-24 19:10:05 【问题描述】:我想运行如下查询:
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 error ora-00933 sql command not properly end on line: 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) )
【讨论】:
既然你更快...sqlfiddle.com/#!4/60d85/1 很好地指出@Passerby,有两种方法可以解决这个问题。即删除EXISTS
将导致为所有没有匹配的记录设置NULL
。【参考方案2】:
请看这里:***
两种方法都可以:
-
就像存在的答案一样
如果您的表由具有唯一索引或主键的列(这些列
UPPER(I.STATE_NAME_FI) = UPPER(S.STATE_NAME)
)连接,则使用内联视图
【讨论】:
以上是关于来自内部连接查询的更新集抛出错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
SQL 从带有子查询的多个表中选择数据(包括来自内部连接的数据)错误:1242
MS Access SQL:使用另一个表中的Sum更新连接查询
来自 UPDATE 查询的“SQL 命令未正确结束”错误 [重复]