我有一个包含 7 个真/假列的表,如何选择所有有 2 个或更多列设置为真的行?
这是我到目前为止所拥有的:
select count(*), c1,c2,c3,c4,c5,c6,c7
from members
where
1 in (c1,c2,c3,c4,c5,c6,c7);
我有一个包含 7 个真/假列的表,如何选择所有有 2 个或更多列设置为真的行?
这是我到目前为止所拥有的:
select count(*), c1,c2,c3,c4,c5,c6,c7
from members
where
1 in (c1,c2,c3,c4,c5,c6,c7);
真/假列只是一个 1 位整数。除非您存储的值不是 0 和 1 或者该列可以为空,否则您只需添加列并检查结果是否 >= 2
SELECT * FROM members WHERE c1 + c2 + c3 + c4 + c5 + c6 + c7 >= 2
如果有一些非 0 和非 1 条目,您应该事先更正它。如果它们可以为 NULL,则需要使用WHERE IFNULL(c1, 0)...
您可以尝试以下操作:
SELECT * FROM members WHERE c1+c2+c3+c4+c5+c6+c7>=2
由于 true 为 1,因此您可以计算字段总数为 more => 2。
SELECT * FROM members WHERE c1+c2+c3+c4+c5+c6+c7 >= 2