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