Liquibase/Oracle:将值从一个 table 复制到 one-to-many 关系中的另一个
Liquibase/Oracle: Copy value from one table to another in a one-to-many relationship
我有两个 table parent
和 child
具有 one-to-many 关系。我在 child table 中有一个值,对于给定的 parent ID,该值始终相同。因此,我想将值复制到 parent table.
中新创建的列
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 将实现您正在寻找的东西:
update parent p
set value = (select distinct value
from child c
where c.parent_id = p.parent_id);
我有两个 table parent
和 child
具有 one-to-many 关系。我在 child table 中有一个值,对于给定的 parent ID,该值始终相同。因此,我想将值复制到 parent table.
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 将实现您正在寻找的东西:
update parent p
set value = (select distinct value
from child c
where c.parent_id = p.parent_id);