我想获得特定年份,特定月份和特定用户的所有橙子的总和。我和AND& amp;尝试了几种选择。要么。我不确定如何在超过3个条件下使用AND。下面是一个示例网格,例如,对于第一行,期望的结果是2,附加的示例是pic格式,我正在尝试的查询之一是
查询
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 :(得分: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
答案 1 :(得分:0)
您可以使用OR
条件
SELECT count(*)
FROM `usr_fruit`
where 'orange' IN (d1,d2,d3,d4)
and (year=115
or usrNo= 1
or month=2);
答案 2 :(得分: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);
答案 3 :(得分:0)
根据澄清评论:
连续的橙子数,usrNo = 1,月= 2,年= 115
你可以利用MySQL解释布尔值的方式" true"表达为1
和" false"作为0
放入数字上下文时:
SELECT (d1 == 'orange') + (d2 == 'orange') + (d3 == 'orange') + (d4 == 'orange')
FROM usr_fruit
WHERE usrNo = 1 AND month = 2 AND year = 115