首页 > 数据库 > mysql教程 > 如何使用Oracle中的内连接正确执行更新查询?

如何使用Oracle中的内连接正确执行更新查询?

Susan Sarandon
发布: 2025-01-25 04:50:09
原创
274 人浏览过

How to Correctly Perform an UPDATE Query with INNER JOIN in Oracle?

在Oracle中使用INNER JOIN正确执行UPDATE查询

MySQL中的以下查询可以成功执行:

<code class="language-sql">UPDATE table1
INNER JOIN table2 ON table1.value = table2.DESC
SET table1.value = table2.CODE
WHERE table1.UPDATETYPE='blah';</code>
登录后复制

但是,在Oracle中运行相同的查询会导致以下错误:

<code>SQL错误:ORA-00933:SQL命令未正确结束
00933. 00000 -  "SQL command not properly ended"</code>
登录后复制

解决方案

该查询中使用的语法在Oracle中无效。为了达到预期的结果,您可以使用以下方法之一:

第一种方法

<code class="language-sql">UPDATE table1 SET table1.value = (SELECT table2.CODE
                                  FROM table2 
                                  WHERE table1.value = table2.DESC)
WHERE table1.UPDATETYPE='blah'
AND EXISTS (SELECT table2.CODE
            FROM table2 
            WHERE table1.value = table2.DESC);</code>
登录后复制

此方法使用子查询根据连接条件获取table1.value的更新值。它确保只更新匹配的行。

第二种方法

<code class="language-sql">UPDATE 
(SELECT table1.value as OLD, table2.CODE as NEW
 FROM table1
 INNER JOIN table2
 ON table1.value = table2.DESC
 WHERE table1.UPDATETYPE='blah'
) t
SET t.OLD = t.NEW;</code>
登录后复制

此方法使用可更新的内联视图来执行更新。它要求Oracle认为内联视图是可更新的,这取决于某些规则。

以上是如何使用Oracle中的内连接正确执行更新查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板