使用 Join 的 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);
问题:
查询执行由于缺少条件,该条件将确保子查询为 t1 中的每个更新行返回一行。
解决方案:
要解决此问题,条件必须添加到子查询中以将 t1 中的行与子查询中的行相关联。例如,可以使用以下条件:
AND t1.some_key = t2.some_key
生成的更新查询将如下所示:
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 AND t1.some_key = t2.some_key);
其他注意事项:
以上是如何使用 JOIN 修复无限期运行的 Oracle UPDATE 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!