计算多个列为真的计数

时间:2013-05-21 14:20:56

标签: mysql

我有一个包含7个真/假列的表,如何选择有2个或更多列设置为true的所有行?

这是我到目前为止所做的:

select count(*), c1,c2,c3,c4,c5,c6,c7
from members
where
1 in (c1,c2,c3,c4,c5,c6,c7);

3 个答案:

答案 0 :(得分:6)

真/假列只是一个1位整数。除非存储了0和1以外的值或列可以为空,否则只需添加列并检查结果是否为> = 2

SELECT * FROM members WHERE c1 + c2 + c3 + c4 + c5 + c6 + c7 >= 2

如果有一些非0和非1条目,您应事先纠正此问题。如果它们可以为NULL,则需要使用WHERE IFNULL(c1, 0)...

答案 1 :(得分:3)

您可以尝试以下操作:

SELECT * FROM members WHERE c1 + c2 + c3 + c4 + c5 + c6 + c7> = 2

答案 2 :(得分:1)

由于true为1,您可以计算字段总数为更多=> 2。

SELECT * FROM members WHERE c1+c2+c3+c4+c5+c6+c7 >= 2