2013-05-21 51 views
3

我有一個包含7個真/假列的表,如何選擇所有具有2個或更多列設置爲true的行?在多個列爲真的情況下計數

這是我到目前爲止有:

select count(*), c1,c2,c3,c4,c5,c6,c7 
from members 
where 
1 in (c1,c2,c3,c4,c5,c6,c7); 

回答

6

真/假列只是一個1位整數。除非你有其他值比存儲0和1,或者列是空的,你可以添加列,並檢查結果是否爲> = 2

SELECT * FROM members WHERE c1 + c2 + c3 + c4 + c5 + c6 + c7 >= 2 

如果有一些非0和非1項,你應該事先改正這一點。如果他們可以爲NULL,則需要使用WHERE IFNULL(c1, 0)...

+0

這完美的作品! –

3

你可以嘗試以下操作:

SELECT * FROM成員,其中C1 + C2 + C3 + C4 + C5 + C6 + C7> = 2

1

由於真正的爲1,則可以計算出總的領域更加=> 2

SELECT * FROM members WHERE c1+c2+c3+c4+c5+c6+c7 >= 2

相關問題