首页 > 数据库 > mysql教程 > 如何使用联接正确更新 Oracle 表并避免 ORA-00933 错误?

如何使用联接正确更新 Oracle 表并避免 ORA-00933 错误?

Barbara Streisand
发布: 2024-12-29 00:13:11
原创
400 人浏览过

How to Correctly Update Oracle Tables Using Joins and Avoid ORA-00933 Errors?

使用联接更新 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 语句:

  • 执行表连接计算每个匹配行的总计。
  • 使用 ON 子句来匹配行基于 id 列。
  • 通过将计算出的总计添加到现有的 Total_adjusted_cost 列来更新 table1 中的匹配行。

以上是如何使用联接正确更新 Oracle 表并避免 ORA-00933 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板