首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle SQL:使用另一个表中的数据更新表

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

Stack Overflow用户
提问于 2011-08-12 02:05:55
回答 7查看 1.1M关注 0票数 287

表1:

id    name    desc
-----------------------
1     a       abc
2     b       def
3     c       adf

表2:

id    name    desc
-----------------------
1     x       123
2     y       345

在oracle SQL中,如何运行sql update查询,使其可以使用表2的name更新表1,并使用相同的desc更新表1?所以我得到的最终结果是

表1:

id    name    desc
-----------------------
1     x       123
2     y       345
3     c       adf

问题取自update one table with data from another,但专门针对oracle SQL。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-08-12 03:05:22

这称为关联更新。

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 )

假设连接的结果是一个保留键的视图,您还可以

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
票数 576
EN

Stack Overflow用户

发布于 2015-09-24 04:22:49

试试这个:

MERGE INTO table1 t1
USING
(
-- For more complicated queries you can use WITH clause here
SELECT * FROM table2
)t2
ON(t1.id = t2.id)
WHEN MATCHED THEN UPDATE SET
t1.name = t2.name,
t1.desc = t2.desc;
票数 185
EN

Stack Overflow用户

发布于 2011-08-12 02:08:50

试一试

UPDATE Table1 T1 SET
T1.name = (SELECT T2.name FROM Table2 T2 WHERE T2.id = T1.id),
T1.desc = (SELECT T2.desc FROM Table2 T2 WHERE T2.id = T1.id)
WHERE T1.id IN (SELECT T2.id FROM Table2 T2 WHERE T2.id = T1.id);
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7030699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档