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
)
在 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
)