0

在 postgresql 中实现传递连接的最佳方法是什么?目前,我想对表 a、b 和 c 进行完全外连接。我的查询目前如下所示:

SELECT *
FROM a 
FULL OUTER JOIN b
ON a."ID" = b."ID"
FULL OUTER JOIN c
ON a."ID" = c."ID"

我遇到了一个问题,表 B 和表 C 中匹配的一些记录显示在查询输出的不同行中,我意识到这一定是因为我没有显式连接表 B 和 C。什么是编写 a=b、a=c 和 b=c 的“传递”查询的最佳方法?
这是我当前输出的示例。现在,当只存在表 B 和 C 的匹配 ID 时,我得到 2 个不同的行:

援助 出价 身份证
32 32 无效的
35 35 35
36 无效的 36
无效的 42 无效的
无效的 无效的 42

这是我想要的输出:

援助 出价 身份证
32 32 无效的
35 35 35
36 无效的 36
无效的 42 42
4

1 回答 1

1

使用using

SELECT *
FROM a FULL OUTER JOIN
     b
     USING ("ID") FULL OUTER JOIN
     c
     USING ("ID");

如果在您的真实示例中,列具有不同的名称:

SELECT *
FROM a FULL OUTER JOIN
     b
     ON b.id = a.id FULL OUTER JOIN
     c
     ON c.id = COALESCE(b.id, a.id);
于 2021-03-12T17:13:07.847 回答