Maison >base de données >tutoriel mysql >Comment corriger l'erreur ORA-00933 dans la requête Oracle UPDATE à l'aide d'un JOIN ?

Comment corriger l'erreur ORA-00933 dans la requête Oracle UPDATE à l'aide d'un JOIN ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-28 05:07:13911parcourir

How to Fix ORA-00933 Error in Oracle UPDATE Query Using a JOIN?

Résolution de l'erreur ORA-00933 dans la requête de mise à jour Oracle à l'aide de la jointure

Lors d'une tentative de mise à jour de la colonne de montant à l'aide d'une requête de jointure, une exception a été rencontrée : ORA- 00933, indiquant une commande SQL mal terminée.

La requête initiale was :

UPDATE tab1
SET tab1.total_adjusted_cost = tab1.total_adjusted_cost + t1.total
FROM table1 tab1, 
(SELECT tab3.name, tab3.add, SUM(tab2.amount) AS total
FROM table2 tab2,
table3 tab3,
table4 tab4
WHERE tab2.id = tab3.id
AND tab3.id = tab4.id
AND tab4.indicator = 'Y'
GROUP BY tab3.name, tab3.add ) t1
WHERE tab1.id = t1.id;

Pour rectifier cette erreur et exécuter avec succès votre mise à jour, il est recommandé d'utiliser une instruction de fusion au lieu d'une requête de jointure. L'instruction de fusion suivante peut être utilisée :

merge into table1 tab1 
using
(
SELECT tab3.name, tab3."add", SUM(tab2.amount) AS total
FROM table2 tab2,
table3 tab3 ,
table4 tab4
WHERE tab2.id        = tab3.id
AND tab3.id            = tab4.id
AND tab4.indicator             ='Y'
GROUP BY tab3.name,
tab3."add"
)t1
on(tab1.id      = t1.id)
when matched then 
update set tab1.total_adjusted_cost = tab1.total_adjusted_cost + t1.total

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