首页 > 数据库 > mysql教程 > 如何使用另一个表中的值更新 Oracle 表的数据?

如何使用另一个表中的值更新 Oracle 表的数据?

Susan Sarandon
发布: 2025-01-22 02:52:13
原创
825 人浏览过

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

Oracle SQL:使用另一个表中的值更新表数据

数据库管理经常需要使用来自另一个表的值来更新一个表的数据。 让我们用两个示例表来说明这一点:

表 1:

<code>id    name    desc
-----------------------
1     a       abc
2     b       def
3     c       adf</code>
登录后复制

表 2:

<code>id    name    desc
-----------------------
1     x       123
2     y       345</code>
登录后复制

我们的目标是使用 Table 1 中的数据更新 namedescTable 2 列,与 id 列匹配。期望的结果:

表 1(更新):

<code>id    name    desc
-----------------------
1     x       123
2     y       345
3     c       adf</code>
登录后复制

Oracle SQL 为此类相关更新提供了有效的方法:

方法一:关联子查询

此方法在 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>
登录后复制

此查询更新 Table 1 中的每一行,其中 id 中存在匹配的 Table 2

方法 2:使用通用表表达式 (CTE)

或者,如果连接创建了一个保留键的视图,CTE 提供了一个更干净的解决方案:

<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>
登录后复制

此方法构造一个临时视图(使用 CTE),组合两个表中的相关字段,然后对此视图执行更新。

两种方法都可以根据 Table 1 中的数据有效更新 Table 2,展示了 Oracle SQL 中数据操作的灵活技术。

以上是如何使用另一个表中的值更新 Oracle 表的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板