PostgreSQL 如何对结果进行分组以便所有行都必须为真?

PostgreSQL how to group results so all rows must be true?

在 PostgreSQL 中,我有一个查询可以 return 1 行或多行布尔值。如果所有行都为真,我如何 运行 对这个结果集进行 select 查询以获得一个 return 为真的布尔值?如果此结果集中的一行或多行为假,则 return 为假。

您正在描述布尔聚合,为此 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
                  )