2017-02-23 39 views
0

布尔值,我有一个查询返回如何分组结果PostgreSQL里

Select bool_val 
from ..... 

查询返回与所有的TrueFalse值或没有行很多行。

我希望查询基于True或者False的条件下,如果有一个真正的结果是True否则False总是返回。

例如: 查询结果:

False 
False 
True 
False 

应该返回True

查询结果:

False 
False 

应该返回False

查询结果:

应该返回False因为查询为空。

如何使用PostgreSQL查询没有IFs

回答

1

您可以使用一个布尔值合计:

select bool_or(bool_val) 
from the_table; 

也得到一个false当表不包含任何行,使用coalesce()(感谢埃拉德)

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

另 - 可能更快 - 选项:

select exists (select 1 from the_table where bool_val) 
+0

如果使用'select coalesce(bool)也可以避免联合_or(bool_val),False)from the_table ...;'coalesce'将处理没有返回行的情况。 – Elad

+0

@Elad:啊,对。好多了,谢谢 –