我想问你在PostgreSQL中如何使用select或aggregate函数检查表格列中的一个布尔值是否为真?
感谢。
答案 0 :(得分:11)
您可以使用的布尔特定aggregate functions很少:bool_and
,bool_or
,every
。
在您的特定情况下,您需要bool_or
汇总
查询就像这样简单:
SELECT bool_or(my_column) FROM my_table
答案 1 :(得分:4)
您不能使用SUM(DATA),但可以将值(见下文)转换为int(0 = false,1 = true)。但是,使用EXISTS(...)可能更有效,特别是如果您对TRUE值的数量不感兴趣。
create table test(data boolean);
insert into test values(true), (false);
select sum(cast(data as int)) from test;
select exists(select * from test where data);
答案 2 :(得分:1)
要知道是否至少有1个真值:
select sum(cast(data as int)) > 0
这比现有解决方案更好,因为它可以嵌入到更大的查询中,可能包含group by和其他where子句