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.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通过两张表更新一张表的主要内容,如果未能解决你的问题,请参考以下文章