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

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

Patricia Arquette
Patricia Arquette原创
2024-12-17 01:54:25381浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn