如果任何源列为true,则将布尔值聚合为true

时间:2016-11-04 04:40:16

标签: sql postgresql aggregate-functions boolean-logic

假设我有下表:

id   column_a  column_b   column_c
1     t          f           t
2     t          f           f
3     f          t           f

从上表中,我想:

select rows from id = 1,2;

结果应为:

column_a   column_b   column_c
 t          f            t

如果定义的id中的任何行对于特定列具有true,我们假设结果为真。

2 个答案:

答案 0 :(得分:5)

使用聚合函数bool_or()

SELECT bool_or(column_a) AS column_a
     , bool_or(column_b) AS column_b
     , bool_or(column_c) AS column_c
FROM   tbl
WHERE  id IN (1,2);

手册:

  

如果至少有一个输入值为true,则为true,否则为false

答案 1 :(得分:0)

bool_or(...)绝对是你最好的朋友。

要记住哪一个手册没有提及,只需要记住一件事:如果提供给bool_or的所有值都是null,那么结果也会是null