Maison > base de données > tutoriel mysql > Comment mettre à jour correctement les tables Oracle à l'aide de jointures et éviter les erreurs ORA-00933 ?

Comment mettre à jour correctement les tables Oracle à l'aide de jointures et éviter les erreurs ORA-00933 ?

Barbara Streisand
Libérer: 2024-12-29 00:13:11
original
454 Les gens l'ont consulté

How to Correctly Update Oracle Tables Using Joins and Avoid ORA-00933 Errors?

Mise à jour des tables Oracle à l'aide de jointures

L'objectif est de mettre à jour une table à l'aide d'une jointure et de rencontrer l'erreur "ORA-00933 : commande SQL pas correctement terminé."

Cela se produit car la requête fournie n'est pas syntaxiquement correcte. La logique de la requête consiste à calculer un total à partir de plusieurs tables jointes par des colonnes communes et à mettre à jour la table d'origine avec le total calculé.

Pour résoudre ce problème, nous vous recommandons d'utiliser plutôt une instruction MERGE, qui fournit une méthode plus explicite. pour mettre à jour les données en fonction des conditions. La syntaxe MERGE s'aligne plus efficacement sur les règles métier.

Voici une requête révisée utilisant l'instruction MERGE :

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;
Copier après la connexion

Cette instruction MERGE :

  • Effectue une jointure de table pour calculer le total de chaque ligne correspondante.
  • Utilise la clause ON pour faire correspondre les lignes en fonction de l'identifiant column.
  • Mise à jour les lignes correspondantes dans le tableau 1 en ajoutant le total calculé à la colonne total_adjusted_cost existante.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal