oracle通过两张表更新一张表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle通过两张表更新一张表相关的知识,希望对你有一定的参考价值。

有ABC三张表,A表T数据空,需要将BC表中的T数据根据id更新过去,两次update之后发现第一次更新的都变成空的了

参考技术A

到底用b还是c来更新?或者有什么关系?

给你写一个用B更新A的吧:

update A set t = (select T from B where a.id = b.id)
where exists (select 1 from B where a.id = b.id and b.T is not null);

追问

用B和C更新A,但是我分开更新发现,第二次更新将第一次的刷没了

追答

where很关键的;
oracle的用其它表更新中没有sqlserver的update from 的语法,用上面的语法where一定要写对。

参考技术B 先把BC两表数据整合一下,create view V_BC select B.T,B.ID, FROM B UNION SELECT C.T,C.ID FROM C.追问

提示缺少关键字

追答

B.ID后面多了个逗号

追问

少了个as,我已经做好啦,谢谢

本回答被提问者采纳
参考技术C 更新一张表

Oracle两张表关联批量更新其中一张表的数据

Oracle两张表关联批量更新其中一张表的数据

方法一(推荐):

UPDATE 表2
   SET 表2.C =
          (SELECT B
             FROM 表1
            WHERE 表1.A = 表2.A)
 WHERE EXISTS
          (SELECT 1
             FROM 表1
            WHERE 表1.A = 表2.A);

尤其注意最后的外层where条件尤为重要,是锁定其批量更新数据的范围。

方法二:

MERGE INTO 表2
     USING 表1
        ON (表2.A = 表1.A)                                       -- 条件是 A 相同
WHEN MATCHED
THEN
   UPDATE SET 表2.C = 表1.B                                      -- 匹配的时候,更新

 

以上是关于oracle通过两张表更新一张表的主要内容,如果未能解决你的问题,请参考以下文章

在Oracle-sql中比较两张表并更新一张表

Oracle两张表关联批量更新其中一张表的数据

oracle中怎么如何把两张表中查询到的数据求和,

oracle 想把三张表关联起来,怎么关联?

oracle的数据库中怎么将一张表中数据插入另一张表,两张表都存在

Oracle两张表关联中间表查询,那张关联到数据就显示,关联不到就负空值