2014-03-30 31 views
0

我有一個包含24列(jan1, jan2, feb1, feb2, mar1, mar2,....dec1,dec2)的表格,其中有唯一的ID(1到N)作爲行。單元格值將爲1(真)或2(假)。現在我想查詢所有月份(列)具有1(true)值的特定行。MySQL:如何指定一個表中的多個列的通用條件?

我可以寫查詢像

select * form [table] 
where id=232 and 
     jan1=1 and jan2=1 and feb1=1 ....... and dec2=1; 

但尋找一個更好的解決方案,如果有的話。 請幫忙。

回答

1

解決方案1 ​​

串連所有的列行的值,並與111111111111111111111111爲相等比較。

select * from [table] 
where id = 232 and 
     concat(jan1, jan2, feb1, ......., dec2) = '111111111111111111111111`; 

溶液2

串聯所有列的行的值,並用空字符替換所有1' S和比較長度0

select * from [table] 
where id = 232 and 
     length(replace(concat(jan1, jan2, feb1, ......., dec2), 
         '1', 
         '') 
      ) = 0; 
+0

你能幫幫我是否需要找回那幾個月有特定行1(真)值做什麼(比如ID = 232)? – user3478673

+0

@ user3478673:您是否閱讀並理解我的解決方案? –

+0

是的,謝謝。對於ID = 232的所有行,您的解決方案檢查value = 1,如果爲true,則檢索值爲1。但是如果只有一些單元格有1個,其他單元格有2個(假),我只需要檢索那些有1個值的月份(列)呢?請幫忙。對不起,如果我沒有早先適當傳達。 – user3478673

相關問題