You need to enable JavaScript to run this app. PostgreSQL 12关联查询如何保留未接种患者并显示空疫苗名称
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 12关联查询如何保留未接种患者并显示空疫苗名称

PostgreSQL 关联查询保留无匹配左表行实现方案

核心思路

你当前使用的INNER JOIN只会返回两表关联条件匹配的行,要保留所有患者记录,需替换为左外连接(LEFT JOIN),再通过空值处理函数将未匹配到的疫苗名称转为空字符串即可。

最终查询语句

SELECT 
    p.id,
    p.name,
    COALESCE(v.name, '') AS vaccine_id
FROM  patient p
LEFT JOIN vaccine v
    ON p.vaccine_id = v.id

逻辑说明

  • LEFT JOIN:保留左表(patient)的全部数据,右表(vaccine)无匹配记录时,右表所有字段返回NULL
  • COALESCE(v.name, ''):判断疫苗名称字段如果为NULL,则返回空字符串,符合你要求的显示效果
  • 手动指定查询字段替代SELECT *,避免两表同名字段冲突,也更符合生产环境查询规范

执行效果

用你提供的示例数据执行上述语句,返回结果和你期望的完全一致:已接种患者正常显示对应疫苗名称,未接种的jessica对应疫苗字段显示为空字符串。

内容的提问来源于stack exchange,提问作者Hey StackExchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 19:36:03