Postgres:从引用 table 复制特定字段的值仅用于匹配外键

Postgres: copy value of specific field from referenced table only for matching foreign keys

我目前在同一个 postgres 数据库中有两个 table:

实体A:

Column type nullable
id uuid false
value1 varchar true
value2 varchar true
entityB_id foreign key true

实体 B:

Column type nullable
id uuid false
value1 varchar true
value2 varchar true

我知道需要将 value1 和 value2 从 EntityB table 复制到 EntityA 的 table 中,但仅限于引用 EntityB id 的行。

我尝试了以下但没有成功:

insert into EntityA (value1, value2)
select EntityB.value1, EntityB.value2 
from EntityB
where EntityA.entityB_id = EntityB.id

我找到了关于如何将数据从一个 table 复制到另一个的其他指南,但没有满足条件。我目前不知道如何成功复制该数据。非常感谢任何帮助!

据我了解,您想使用存储在 B 中的数据更新 table A 中的数据。例如你从

开始
A id value1 value2 entityB_id
1 null null 2
B id value1 value2
2 'test' 'test2'

并期望 A 中出现以下结果:

A id value1 value2 entityB_id
1 'test' 'test2' 2

您需要使用 UPDATE 而不是 INSERT,因为您要修改现有行:

UPDATE "EntityA" a
SET value1 = (
    SELECT b."value1"
    FROM "EntityB" b
    WHERE b.id = a."entityB_id"
),
value2 = (
    SELECT b."value2"
    FROM "EntityB" b
    WHERE b.id = a."entityB_id"
)
WHERE "entityB_id" IS NOT NULL