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

PostgreSQL左关联无数据时如何返回空JSON数组而非含空对象的数组

解决PostgreSQL JSON_AGG返回空数组而非全null对象数组的问题

直接修改你的查询,通过过滤空行+默认值替换实现需求:

SELECT 
  establishment.*,
  COALESCE(
    JSON_AGG(
      JSON_BUILD_OBJECT(
        'id', esi.id,
        'url', esi.url,
        'itemType', esi.item_type
      )
    ) FILTER (WHERE esi.id IS NOT NULL),
    '[]'::JSON
  ) logos
FROM establishment
LEFT JOIN establishment_storage_item AS esi ON establishment.id = esi.establishment_id
GROUP BY establishment.id;

关键修改点说明:

  • FILTER (WHERE esi.id IS NOT NULL):过滤掉LEFT JOIN产生的无匹配null行,确保只有存在有效logo数据时才生成JSON对象
  • COALESCE(..., '[]'::JSON):当没有任何匹配的logo数据时,将聚合结果(此时为null)替换为JSON空数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:42:00