PostgreSQL中的选择或布尔聚合函数
Posted
技术标签:
【中文标题】PostgreSQL中的选择或布尔聚合函数【英文标题】:Select or boolean aggregate function in PostgreSQL 【发布时间】:2011-04-12 01:47:37 【问题描述】:我想问你如何在 PostgreSQL 中使用选择或聚合函数检查表列中的布尔值之一是否为真?
【问题讨论】:
【参考方案1】:您可以使用几个布尔特定的aggregate functions:bool_and
、bool_or
、every
。
在您的特定情况下,您需要 bool_or
聚合。
查询就这么简单:
SELECT bool_or(my_column) FROM my_table
【讨论】:
【参考方案2】:要知道是否至少有1个真值:
select sum(cast(data as int)) > 0
这比exists解决方案更好,因为它可以嵌入到更大的查询中,可能包含group by和其他where子句
【讨论】:
【参考方案3】:您不能使用 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);
【讨论】:
准确地说:select exists(select * from test where data='true');有用!感谢您的回复。以上是关于PostgreSQL中的选择或布尔聚合函数的主要内容,如果未能解决你的问题,请参考以下文章
选择列表中的无效表达式(不包含在聚合函数或 GROUP BY 子句中)