【问题标题】:Select or boolean aggregate function in PostgreSQLPostgreSQL中的选择或布尔聚合函数
【发布时间】:2011-04-12 01:47:37
【问题描述】:

我想问你如何在 PostgreSQL 中使用选择或聚合函数检查表列中的布尔值之一是否为真?

【问题讨论】:

    标签: sql 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');有用!感谢您的回复。
        猜你喜欢
        • 2021-08-23
        • 2016-10-12
        • 2021-04-03
        • 2011-06-12
        • 1970-01-01
        • 2019-12-08
        • 2023-01-29
        • 2016-08-30
        • 1970-01-01
        相关资源
        最近更新 更多