Maison >base de données >tutoriel mysql >Comment puis-je mettre à jour une table Oracle à l'aide de sous-requêtes corrélées ?

Comment puis-je mettre à jour une table Oracle à l'aide de sous-requêtes corrélées ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-22 02:56:10944parcourir

How Can I Update an Oracle Table Using Correlated Subqueries?

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!

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