Maison >base de données >tutoriel mysql >Comment puis-je mettre à jour une table Oracle à l'aide de sous-requêtes corrélées ?
Utilisation de sous-requêtes corrélées pour mettre à jour les données de table dans Oracle SQL
Lorsque les données d'une table doivent être mises à jour à partir d'une autre table en fonction des ID correspondants, Oracle SQL fournit un mécanisme puissant appelé mises à jour associées. Cette approche permet des mises à jour transparentes en utilisant des sous-requêtes dans les instructions SQL.
Regardons un exemple dans lequel nous mettrons à jour le tableau 1 avec les données du tableau 2 en fonction de son identifiant correspondant.
<code>Table 1: id name desc ----------------------- 1 a abc 2 b def 3 c adf Table 2: id name desc ----------------------- 1 x 123 2 y 345</code>
Pour réaliser cette mise à jour dans Oracle SQL, nous pouvons utiliser la requête suivante :
<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>
Cette requête utilise une sous-requête corrélée pour extraire les données correspondantes du tableau 2 en fonction de l'ID du tableau 1. La clause WHERE garantit que seules les lignes du tableau 1 qui ont des lignes correspondantes dans le tableau 2 sont mises à jour.
Alternativement, si le résultat de la jointure est une vue préservant la clé, vous pouvez également utiliser la requête suivante :
<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>
Cette requête effectue une mise à jour dans une table dérivée, où les données correspondantes des deux tables sont jointes par la colonne ID. La clause SET suivante met à jour les colonnes du tableau 1 avec les valeurs du tableau 2.
En utilisant ces technologies de mise à jour associées, nous pouvons mettre à jour efficacement les données dans Oracle SQL, garantissant une synchronisation transparente et une cohérence des données entre les tables.
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!