【问题标题】:Liquibase/Oracle: Copy value from one table to another in a one-to-many relationshipLiquibase/Oracle:以一对多关系将值从一个表复制到另一个表
【发布时间】:2021-07-29 01:19:51
【问题描述】:

我有两个表 parentchild 具有一对多关系。对于给定的父 ID,我在子表中有一个始终相同的值。因此,我想将该值复制到父表中新创建的列中。

PARENT_ID VALUE
1 null
2 null
CHILD_ID  PARENT_ID VALUE
1 1 VALUE_1
2 1 VALUE_1
3 1 VALUE_1
4 2 VALUE_2
5 2 VALUE_2

我正在使用 Liquibase 并正在寻找一种适用于 Oracle 和 H2(在 Oracle 模式下)的解决方案。

这给了我一个语法错误,但嵌套的 SELECT 有效:

UPDATE (SELECT DISTINCT PARENT.PARENT_ID, CHILD.VALUE as OLD_COLUMN, PARENT.VALUE as NEW_COLUMN
FROM PARENT
LEFT JOIN CHILD
ON PARENT.PARENT_ID = CHILD.PARENT_ID) t
SET t.NEW_COLUMN = t.OLD_COLUMN;

嵌套 SELECT 的输出:

PARENT_ID  OLD_COLUMN NEW_COLUMN
1 VALUE_1 null
2 VALUE_2 null

不一定是 SQL 解决方案,Liquibase 更新会更好。

【问题讨论】:

    标签: sql oracle liquibase


    【解决方案1】:

    我认为这个 sql 会实现你想要的:

    update parent p
      set value = (select distinct value 
                     from child c 
                    where c.parent_id = p.parent_id);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      相关资源
      最近更新 更多