在PostgreSQL中,我有一个查询可以返回1行或多行布尔值。如果所有行都为true,我如何对该结果集运行选择查询以获得返回true的单个布尔值?如果此结果集中的一行或多行为false,则返回false。
您正在描述布尔聚合,Postgres为其提供了内置函数,如bool_or()
和bool_and()
:
select bool_and(mybool) as myresult
from (
--- your query, that returns a boolean column called "mybool"
) t
使用not exists
:可能会更快
select not exists (select 1
from <your query>
where not mybool
)