使用 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中文网其他相关文章!