You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres查询:如何返回关联表无对应记录的主表数据?

解决Postgres跨表关联查询缺失记录的问题

原查询语句使用的是隐式内连接(通过逗号分隔表+WHERE条件关联),这种方式仅会返回两张表中id完全匹配的记录,因此会丢失两类数据:

  • 存在于Person但未关联Address的人员记录
  • 存在于Address但未关联Person的地址记录

要同时包含这两类缺失的记录,你需要使用全外连接(FULL OUTER JOIN),它会返回两个表的所有记录,匹配的行合并展示,不匹配的行对应另一张表的字段会显示为NULL。

修改后的查询语句如下:

SELECT *
FROM "Person" p
FULL OUTER JOIN "Address" a
ON p.id = a.id;

如果你的需求只是要返回所有人员(无论是否有地址),不需要单独的无对应人员的地址记录,那么使用**左外连接(LEFT OUTER JOIN)**更合适:

SELECT *
FROM "Person" p
LEFT OUTER JOIN "Address" a
ON p.id = a.id;

注:OUTER关键字可以省略,写成LEFT JOIN或FULL JOIN,语义完全一致。

内容的提问来源于stack exchange,提问作者George Shalhoub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:45:31