微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql 中的传递连接

如何解决postgresql 中的传递连接

在 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 行:

身份证 B ID C ID
32 32
35 35 35
36 36
42
42

这是我想要的输出

一个ID B ID C ID
32 32
35 35 35
36 36
42 42

解决方法

使用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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。