使用 INNER JOIN 更新 Oracle 數據
您遇到的“SQL command not properly ended”錯誤是因為使用了 MySQL 語法而非 Oracle 語法。 Oracle 更新數據並使用 INNER JOIN 的方法略有不同。
要修正此錯誤,您可以修改查詢如下:
<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>
此查詢中,SET 子句中的子查詢針對 table1 中的每一行執行,根據 table2 中對應的行更新 value 值。 WHERE 子句確保只更新匹配的行。
或者,您可以嘗試以下方法,這取決於內聯視圖的可更新性:
<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>
此方法利用內聯視圖執行連接,然後使用結果更新基礎表。
以上是如何使用 INNER JOIN 正確執行 Oracle UPDATE 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!