Mise à jour avec la requête de jointure dans Oracle
Un utilisateur Oracle a rencontré un temps d'exécution interminable pour la requête 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);
À moins que la sous-requête SELECT ne garantisse un résultat sur une seule ligne, l'instruction UPDATE échouera avec le error :
ORA-01427: single-row subquery returns more than one row
Les mises à jour corrélées nécessitent une condition liant les lignes de la table externe (table1 dans ce cas) et la sous-requête interne. Généralement, cette condition apparaît :
AND t1.some_key = t2.some_key);
De plus, la requête met à jour chaque ligne de la table1. Si l'utilisateur a l'intention de mettre à jour des lignes spécifiques, une clause WHERE qui filtre en fonction de la condition de jointure doit être ajoutée, telle que :
... WHERE subquery_condition
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!