Utiliser SQL pour mettre à jour les données d'une table Oracle à partir d'une autre table
Dans la gestion de bases de données relationnelles, il est souvent nécessaire de mettre à jour les données d'une table en utilisant les valeurs d'une autre table. Cela peut être accompli à l'aide de l'instruction SQL UPDATE.
Scène :
Considérons deux tableaux, le Tableau 1 et le Tableau 2, qui contiennent les données suivantes :
<code>表 1: id name desc ----------------------- 1 a abc 2 b def 3 c adf 表 2: id name desc ----------------------- 1 x 123 2 y 345</code>
Cible :
Mettez à jour le tableau 1 avec les colonnes name et desc du tableau 2 lorsque les colonnes id des deux tableaux correspondent. Les résultats attendus sont les suivants :
<code>表 1: id name desc ----------------------- 1 x 123 2 y 345 3 c adf</code>
Option 1 : Mises à jour associées
Dans Oracle SQL, des mises à jour associées sont disponibles :
<code class="language-sql">UPDATE table1 t1 SET (name, desc) = (SELECT t2.name, t2.desc FROM table2 t2 WHERE t1.id = t2.id) WHERE EXISTS ( SELECT 1 FROM table2 t2 WHERE t1.id = t2.id )</code>
Instructions :
Cette requête effectue une mise à jour sur la table1, en utilisant une sous-requête pour récupérer les valeurs de nom et de description correspondantes de la table2 en fonction de l'identifiant correspondant. La clause WHERE EXISTS garantit que seules les lignes de la table1 qui ont des lignes correspondantes dans la table2 sont mises à jour.
Option 2 : mise à jour basée sur JOIN
En supposant que le résultat produit par la jointure préserve les clés, l'instruction de mise à jour suivante peut être utilisée :
<code class="language-sql">UPDATE (SELECT t1.id, t1.name name1, t1.desc desc1, t2.name name2, t2.desc desc2 FROM table1 t1, table2 t2 WHERE t1.id = t2.id) SET name1 = name2, desc1 = desc2</code>
Instructions :
Cette requête effectue une mise à jour sur la vue de jointure, mettant à jour efficacement les colonnes name et desc de la table1 avec les valeurs correspondant à l'identifiant correspondant dans la table2.
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!