Maison >base de données >tutoriel mysql >Comment effectuer correctement une requête de mise à jour avec Inner Join in Oracle?

Comment effectuer correctement une requête de mise à jour avec Inner Join in Oracle?

Susan Sarandon
Susan Sarandonoriginal
2025-01-25 04:50:09278parcourir

How to Correctly Perform an UPDATE Query with INNER JOIN in Oracle?

Dans l'Oracle, utilisez la jointure intérieure pour exécuter correctement la requête de mise à jour

Les requêtes suivantes dans MySQL peuvent être exécutées avec succès:

Cependant, la même requête dans Oracle provoquera les erreurs suivantes:
<code class="language-sql">UPDATE table1
INNER JOIN table2 ON table1.value = table2.DESC
SET table1.value = table2.CODE
WHERE table1.UPDATETYPE='blah';</code>

Solution
<code>SQL错误:ORA-00933:SQL命令未正确结束
00933. 00000 -  "SQL command not properly ended"</code>

La syntaxe utilisée dans la requête n'est pas valide dans Oracle. Afin de respecter les résultats attendus, vous pouvez utiliser l'une des méthodes suivantes:

La première méthode

Cette méthode utilise la sous-femerie pour obtenir la valeur de mise à jour du tableau 1.Value en fonction des conditions de connexion. Il garantit que seule la ligne de correspondance est mise à jour.

La deuxième méthode
<code class="language-sql">UPDATE table1 SET table1.value = (SELECT table2.CODE
                                  FROM table2 
                                  WHERE table1.value = table2.DESC)
WHERE table1.UPDATETYPE='blah'
AND EXISTS (SELECT table2.CODE
            FROM table2 
            WHERE table1.value = table2.DESC);</code>

Cette méthode utilise un diagramme de liaison interne mis à jour pour exécuter la mise à jour. Il faut Oracle pour penser que la vue de liaison interne est mise à jour, en fonction de certaines règles.

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