需要使用 db link 从另一个数据库更新数据

Need to update data from another database using db link

我在 BI 数据库中有一个 table A,日期为空 (CREATED_ON_DT)。我需要使用 DB link mtl_system_items_b@afldev 更新来自 AFLDEV DB 的正确日期的那些空值。公共键在 AFLDEV 中是 inventory_item_id,在 BI DB 中是 integration_id。我设计了以下查询但它不起作用:

UPDATE w_product_d
SET w_product_d.CREATED_ON_DT = (SELECT min(creation_date)  
FROM mtl_system_items_b@afldev B 
    where to_char(B.inventory_item_id)=w_product_d.integration_id
    and B.organization_id = '102'
    AND w_product_d.CREATED_ON_DT IS NULL
    and w_product_d.integration_id in (SELECT T.integration_id
FROM (SELECT * FROM w_product_d ORDER BY    w_product_d.integration_id )T
    WHERE T.CREATED_ON_DT IS NULL) 
);

如果我 运行 此查询会将所有日期更新为空值,但我需要相反的情况发生,即用正确的日期替换空值。

请帮我解决这个问题!我正在 SQL Developer for Oracle DB 上执行此操作。

我认为您已经将要更新的行和用于更新列值的行联系在一起了。

如果您考虑一下,您想要更新 w_product_d table 中 created_on_dt 为空的行,这意味着您的更新语句将有一个基本的结构:

update w_product_d wpd
set    ...
where  wpd.created_on_dt is null;

一旦你有了它,就可以很容易地插入你正在更新的列以及你正在更新它的内容:

update w_product_d wpd
set    wpd.created_on_dt = (select min(creation_date)
                            from   mtl_system_items_b@afldev b
                            where  to_char(b.inventory_item_id) = wpd.integration_id)
where  wpd.created_on_dt is null;