空表场景下使用json_agg查询如何返回无行?
解决PostgreSQL空表时json_agg返回无行的问题
当表t为空时,原查询SELECT json_agg(t) FROM t会返回一行结果(值为[null]),若要让此时返回无行(0行结果),可以通过添加HAVING子句过滤空表场景:
SELECT json_agg(t) FROM t HAVING count(*) > 0;
原理说明
json_agg作为聚合函数,即使输入数据集为空,也会生成一行包含空数组(或[null])的结果。通过HAVING count(*) > 0,我们只保留表中存在至少一行数据的情况:当表为空时,count(*)为0,不满足HAVING条件,因此不会返回任何行;当表中有数据时,正常返回聚合后的JSON数组。
内容的提问来源于stack exchange,提问作者slsy
相关产品推荐
相关产品推荐

