Postgresql,jsonb_build_object 和 jsonb_agg

Postgresql, jsonb_build_object and jsonb_agg

最近我遇到了两个查询:

select jsonb_build_object('a', jsonb_agg(1))
 where false;

select jsonb_build_object('a', jsonb_agg(1))
 where false
having count(*) > 0;

首先返回 {"a": null},其次 - 什么都没有,你能解释一下这两个查询中发生了什么吗?我不希望两者都有任何结果。

它与 JSON 功能无关。

select count(1) where false;

select count(1) where false having count(1) > 0;

提供相同的效果。

第一个查询报告有 0 条记录满足 where 子句中的给定条件,第二个查询 having 子句从第一个查询 count(1) <= 中过滤掉行0