【发布时间】:2021-07-29 01:19:51
【问题描述】:
我有两个表 parent 和 child 具有一对多关系。对于给定的父 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 更新会更好。
【问题讨论】: