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);
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);
true/false 列は 1 桁の整数です。0 と 1 以外の値が保存されていないか、列が null 可能でない限り、列を追加して結果が >= 2 かどうかを確認できます。
SELECT * FROM members WHERE c1 + c2 + c3 + c4 + c5 + c6 + c7 >= 2
0 以外と 1 以外のエントリがある場合は、事前にこれを修正する必要があります。それらがNULLになる可能性がある場合は、使用する必要がありますWHERE IFNULL(c1, 0)...
以下を試すことができます:
SELECT * FROM メンバー WHERE c1+c2+c3+c4+c5+c6+c7>=2