> 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中文網其他相關文章!