Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Aggregate boolean values to true if any of the source columns is true

Let say I have the following table:

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

From the above table, I want to:

select rows from id = 1,2;

The result should be:

column_a   column_b   column_c
 t          f            t

If any of the rows among the defined id has a true for a particular column we assume the result to be true.

like image 632
Himanshu Mohan Avatar asked Oct 20 '25 16:10

Himanshu Mohan


1 Answers

Use the aggregate function 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);

The manual:

true if at least one input value is true, otherwise false

like image 166
Erwin Brandstetter Avatar answered Oct 23 '25 07:10

Erwin Brandstetter