首页 > 数据库 > mysql教程 > 如何使用 JOIN 子查询修复 Oracle UPDATE 语句中的 ORA-01427?

如何使用 JOIN 子查询修复 Oracle UPDATE 语句中的 ORA-01427?

Patricia Arquette
发布: 2024-12-17 01:54:25
原创
377 人浏览过

How Can I Fix ORA-01427 in My Oracle UPDATE Statement with a JOIN Subquery?

在 Oracle 中使用连接查询进行更新

Oracle 用户遇到以下查询的无限执行时间:

UPDATE table1 t1 SET (t1.col,t1.Output) = (
  SELECT t2.col, t3.Output + t2.col
  FROM tabl2 t3 
  LEFT JOIN table1 t2 ON t3.Join_Key = t2.Join_Key
  WHERE t2.col is not NULL);
登录后复制

除非 SELECT 子查询保证单行结果,否则 UPDATE 语句将失败并显示错误:

ORA-01427: single-row subquery returns more than one row
登录后复制

相关更新需要链接外部表(本例中为 table1)和内部子查询中的行的条件。通常,会出现以下情况:

AND t1.some_key = t2.some_key);
登录后复制

此外,查询会更新 table1 中的每一行。如果用户打算更新特定行,则应添加根据连接条件进行过滤的 WHERE 子句,例如:

...
WHERE subquery_condition
登录后复制

以上是如何使用 JOIN 子查询修复 Oracle UPDATE 语句中的 ORA-01427?的详细内容。更多信息请关注PHP中文网其他相关文章!

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