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

avi*_*avi 5 sql postgresql

我有一个查询返回

Select bool_val
from .....
Run Code Online (Sandbox Code Playgroud)

该查询返回的值多行TrueFalse在所有或没有行。

我希望查询始终返回True或者False根据病情,如果有一个真实的结果True,否则False

例如:查询结果:

False
False
True
False
Run Code Online (Sandbox Code Playgroud)

应该退货True

查询结果:

False
False
Run Code Online (Sandbox Code Playgroud)

应该退货False

查询结果:

no rows
Run Code Online (Sandbox Code Playgroud)

False由于查询为空,应返回。

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

a_h*_*ame 6

您可以使用布尔型聚合:

select bool_or(bool_val)
from the_table;
Run Code Online (Sandbox Code Playgroud)

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

select coalesce(bool_or(bool_val), false)
from the_table;
Run Code Online (Sandbox Code Playgroud)

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

select exists (select 1 from the_table where bool_val)
Run Code Online (Sandbox Code Playgroud)