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
400 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!

source:php.cn
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