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!