Maison > base de données > tutoriel mysql > Comment puis-je mettre à jour les données d'une table Oracle à l'aide des valeurs d'une autre table ?

Comment puis-je mettre à jour les données d'une table Oracle à l'aide des valeurs d'une autre table ?

Susan Sarandon
Libérer: 2025-01-22 02:52:13
original
824 Les gens l'ont consulté

How Can I Update an Oracle Table's Data Using Values from Another Table?

Oracle SQL : mise à jour des données d'une table à l'aide des valeurs d'une autre table

Fréquemment, la gestion de bases de données nécessite de mettre à jour les données d'une table avec des valeurs provenant d'une autre. Illustrons cela avec deux exemples de tableaux :

Tableau 1 :

<code>id    name    desc
-----------------------
1     a       abc
2     b       def
3     c       adf</code>
Copier après la connexion

Tableau 2 :

<code>id    name    desc
-----------------------
1     x       123
2     y       345</code>
Copier après la connexion

Notre objectif est de mettre à jour les colonnes Table 1 et name de desc avec les données de Table 2, correspondant à la colonne id. Le résultat souhaité :

Tableau 1 (mis à jour) :

<code>id    name    desc
-----------------------
1     x       123
2     y       345
3     c       adf</code>
Copier après la connexion

Oracle SQL propose des méthodes efficaces pour ce type de mise à jour corrélée :

Méthode 1 : Sous-requête corrélée

Cette approche utilise une sous-requête corrélée dans l'instruction UPDATE :

<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>
Copier après la connexion

Cette requête met à jour chaque ligne dans Table 1 où un id correspondant existe dans Table 2.

Méthode 2 : Utiliser une expression de table commune (CTE)

Alternativement, si la jointure crée une vue avec clé conservée, un CTE fournit une solution plus propre :

<code class="language-sql">UPDATE (SELECT t1.id, 
               t1.name name1,
               t1.desc desc1,
               t2.name name2,
               t2.desc desc2
          FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id)
   SET name1 = name2,
       desc1 = desc2;</code>
Copier après la connexion

Cette méthode construit une vue temporaire (à l'aide d'un CTE) combinant les champs pertinents des deux tables, puis effectue la mise à jour sur cette vue.

Les deux méthodes mettent à jour efficacement Table 1 en fonction des données dans Table 2, démontrant des techniques flexibles de manipulation des données dans Oracle SQL.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal