我有一个返回
的查询Select bool_val
from .....
该查询返回许多行,其值为True
或False
或根本没有行。
我希望查询始终返回True
或False
,条件是如果有一个为真,则结果为True
,否则为False
。
例如: 查询结果:
False
False
True
False
应该返回True
。
查询结果:
False
False
应该返回False
。
查询结果:
no rows
由于查询为空,应返回False
。
如果没有IFs
使用PostgreSQL的查询,我怎么能这样做?
答案 0 :(得分:4)
您可以使用布尔聚合:
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)