计算具有2个以上条件的行条目

时间:2015-09-22 12:35:08

标签: mysql

我想获得特定年份,特定月份和特定用户的所有橙子的总和。我和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

4 个答案:

答案 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
相关问题