我有一个包含7个真/假列的表,如何选择有2个或更多列设置为true的所有行?
这是我到目前为止所做的:
select count(*), c1,c2,c3,c4,c5,c6,c7
from members
where
1 in (c1,c2,c3,c4,c5,c6,c7);
答案 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