我有一個包含7個真/假列的表,如何選擇所有具有2個或更多列設置爲true的行?在多個列爲真的情況下計數
這是我到目前爲止有:
select count(*), c1,c2,c3,c4,c5,c6,c7
from members
where
1 in (c1,c2,c3,c4,c5,c6,c7);
我有一個包含7個真/假列的表,如何選擇所有具有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)...
你可以嘗試以下操作:
SELECT * FROM成員,其中C1 + C2 + C3 + C4 + C5 + C6 + C7> = 2
由於真正的爲1,則可以計算出總的領域更加=> 2
SELECT * FROM members WHERE c1+c2+c3+c4+c5+c6+c7 >= 2
這完美的作品! –