Maison >base de données >tutoriel mysql >Comment puis-je corriger ORA-01427 dans mon instruction Oracle UPDATE avec une sous-requête JOIN ?

Comment puis-je corriger ORA-01427 dans mon instruction Oracle UPDATE avec une sous-requête JOIN ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-17 01:54:25380parcourir

How Can I Fix ORA-01427 in My Oracle UPDATE Statement with a JOIN Subquery?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn