Maison >base de données >tutoriel mysql >Comment réparer une requête Oracle UPDATE avec JOIN qui s'exécute indéfiniment ?
Requête de mise à jour Oracle avec jointure
Considérez la requête de mise à jour Oracle suivante :
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);
Problème :
La requête s'exécute indéfiniment en raison d'une condition manquante qui garantirait le la sous-requête renvoie une seule ligne pour chaque ligne mise à jour dans t1.
Solution :
Pour résoudre le problème, une condition doit être ajoutée à la sous-requête pour corréler les lignes dans t1 avec ceux de la sous-requête. Par exemple, la condition suivante pourrait être utilisée :
AND t1.some_key = t2.some_key
La requête mise à jour résultante ressemblerait à ceci :
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);
Considérations supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!