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
相关产品推荐
相关产品推荐

