首页 > 解决方案 > 从外部相同数据库 2 更新数据库 1 上的表中的字段

问题描述

为了保持这个镜头。

我想用我保存在外部演示表中的所有价格更新 product_price 字段。

我尝试使用以下查询,但它抛出错误

UPDATE dest
SET product_price = src.product_price
FROM DB2.trades AS dest
INNER JOIN DB1.trades AS src
ON dest.KEY = src.KEY
--And KEY = '12323';

你能帮忙看看怎么做吗?

标签: sqloracleoracle11g

解决方案


假设您要更新的表位于数据库 DB2 中,而“外部”表位于另一个数据库 (DB1) 中,您需要创建一个到 DB1 的数据库链接(我们称之为dbl_db1)并将其表引用为trades@dbl_db1. 像这样的东西:

update trades d set
  d.product_price = (select s.product_price
                     from trades@dbl_db1 s
                     where s.key = d.key
                    )
where exists (select null from trades@dbl_db1 a
              where a.key = d.key
             );

或者,使用MERGE

merge into trades d
  using trades@dbl_db1 s
  on (s.key = d.key)
  when matched then update set
    d.product_price = s.product_price;

推荐阅读