我有一个包含 7 个 true/false 列的表,我如何才能选择具有 2 个或更多列设置为 true 的所有行?
这是我目前所拥有的:
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)...
关于mysql - 统计不止一列为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16672402/