mysql - 统计不止一列为真

标签 mysql

我有一个包含 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/

相关文章:

php - 将一个表中的数据插入到另一个表中,同时插入与表无关的值

php - MySQL + PHP - 根据先前的选择结果选择信息

php - 选择另一列中的数据在最小值的记录

php - 无法显示查询结果

mysql - 如何实现一个可以自定义行顺序的MySQL表?

php - 如何限制PHP中的文本字符?

mysql - 如何编写 A 包含( "a"或 "b")的 MySQL 查询

java - 自动从数据库中获取URL

mysql - 如何在 Rails 3 中生成月度数据报告

MySQL 第一次 UPDATE 查询很慢,后续 UPDATE 很快