如何在PostgreSQL中将结果分组为布尔值

13

我有一个查询返回

Select bool_val
from .....

查询结果可能会有很多行,其值为TrueFalse,也可能没有任何行。

我希望查询总是基于条件返回TrueFalse,即如果存在一个True,则结果为True,否则为False

例如:查询结果如下:

False
False
True
False
应该返回True。 查询结果:
False
False

应该返回False

查询结果:

no rows

由于查询为空,应返回False

如何在不使用IFs的情况下使用PostgreSQL进行查询?

1个回答

14

您可以使用布尔聚合函数:

select bool_or(bool_val)
from the_table;

为了在表中不包含任何行时也获得false,请使用coalesce()(感谢Elad)

select coalesce(bool_or(bool_val), false)
from the_table;

另一个可能更快的选择是:

select exists (select 1 from the_table where bool_val)

如果使用 select coalesce(bool_or(bool_val),False) from the_table...;,也可以避免使用 union。coalesce 将处理没有返回行的情况。 - Elad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接