使用联接更新 Oracle 表
目标是使用联接更新表并遇到错误“ORA-00933: SQL 命令未正确结束。”
出现这种情况是因为提供的查询在语法上不正确。查询逻辑是计算由公共列连接的多个表的总计,并用计算出的总计更新原始表。
要解决此问题,我们建议使用 MERGE 语句,它提供了更明确的方式根据条件更新数据。 MERGE 语法更有效地与业务规则保持一致。
这是使用 MERGE 语句的修改后的查询:
MERGE INTO table1 tab1 USING ( SELECT tab3.name, tab3."add", SUM(tab2.amount) AS total FROM table2 tab2, table3 tab3 , table4 tab4 WHERE tab2.id = tab3.id AND tab3.id = tab4.id AND tab4.indicator ='Y' GROUP BY tab3.name, tab3."add" ) t1 ON (tab1.id = t1.id) WHEN MATCHED THEN UPDATE SET tab1.total_adjusted_cost = tab1.total_adjusted_cost + t1.total;
此 MERGE 语句:
以上是如何使用联接正确更新 Oracle 表并避免 ORA-00933 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!