> oracle更新带有内在的加入:避免ORA-00933
>>使用内部加入更新Oracle表时,常见错误是ORA-00933:“ SQL命令未正确结束。” 这是由于使用错误的语法而产生的。 MySQL(例如MySQL)中使用的标准语法在Oracle中不起作用。UPDATE ... INNER JOIN ... SET ...
问题和Oracle的解决方案>
有问题的语法看起来像这样:
<code class="language-sql">UPDATE table1 INNER JOIN table2 ON table1.value = table2.DESC SET table1.value = table2.CODE WHERE table1.UPDATETYPE='blah';</code>
<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>
>table2.CODE
EXISTS
>子句,以确保更新仅在匹配行中存在table2
中才会发生。这阻止了试图使用不存在的值更新引起的错误。
一种替代方法:内联视图>
另一个选项涉及使用内联视图:
<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中正确更新带有内连接的表以避免ORA-00933?的详细内容。更多信息请关注PHP中文网其他相关文章!