2015-09-22 32 views
1

我想獲得特定年份和特定月份以及特定用戶的所有桔子的總和。我嘗試了幾個選項,並且與&或。我不知道如何在超過3個條件下使用AND。下面是一個例子網格其例如期望的結果是2爲第一行
附例子在PIC格式和查詢我與嘗試之一是計算超過2個條件的行條目

查詢

SELECT count(*) FROM `usr_fruit` 
where (d1="orange" or d2=" orange " or d3=" orange " or d4=" orange ") 
and year=115 and usrNo= 1 and month=2 

表看起來像這

usrNo d1  d2  d3  d4  month year 

1  orange apple apple orange 2  115 
1  apple apple apple apple 3  114 
2  apple apple apple orange 2  115 
2  apple apple apple apple 3  114 
+0

那麼究竟是什麼題?查詢失敗了嗎?返回錯誤的結果? – Mureinik

+0

當我使用月= 2時,它只顯示1,但如果我刪除月= 1,那麼它給出結果爲2 .. – kpt

+0

你有兩行橘子在其中。爲什麼這不正確? – Mureinik

回答

1

,因爲你需要'orange'計數d1, ... d4列,嘗試此查詢:

SELECT (d1='orange') + (d2='orange') + (d3='orange') + (d4='orange') AS count_in_row 
FROM `usr_fruit` 
WHERE year=115 AND usrNo= 1 AND month=2 

這裏(d1='orange')的值爲1時條件爲真否則爲0。請參閱:MySQL Equal operator

+0

它的工作..感謝 – kpt

+0

我不知道問一個後續問題在這個鏈跟蹤或不..建議我作爲即時新的SO ...什麼是查詢只顯示最大值與相同的查詢...意味着在我的表我想選擇計數最大年值..我想要的答案是2爲usrNo = 1和月= 2與最大(年),並不想獲得與第114年有關的數據 – kpt

+0

最大值可以通過計算在[子查詢](https:/ /dev.mysql.com/doc/refman/5.7/en/subqueries.html):'(SELECT MAX(year)FROM usr_fruit WHERE usrNo = 1 AND month = 2)',你可以將這個子查詢放置在115 ' – Rimas

0

您可以修改您的查詢像下面使用OR條件可能

SELECT count(*) 
FROM `usr_fruit` 
where 'orange' IN (d1,d2,d3,d4) 
and (year=115 
or usrNo= 1 
or month=2); 
+0

它工作正常,只有第1行,其餘行數據不正確 – kpt

0

替代您的查詢可能是這樣的:

SELECT COUNT(*) FROM `usr_fruit` where 'orange' IN (`usr_fruit`.`d1`,`usr_fruit`.`d2`,`usr_fruit`.`d3`,`usr_fruit`.`d4`) and 
(year=115 or usrNo= 1 or month=2); 
+0

這個查詢工作良好與usrNo = 1,但如果我嘗試與usrNo = 2那麼這是不正確的 – kpt

0

基於澄清評論:與usrNo = 1的行

數量的橙子,一個月= 2年= 115

你可以利用的方式MySQL的解釋放在數值範圍內時,布爾「真」表達爲1和「假」作爲0

SELECT (d1 == 'orange') + (d2 == 'orange') + (d3 == 'orange') + (d4 == 'orange') 
FROM usr_fruit 
WHERE usrNo = 1 AND month = 2 AND year = 115