mysql查询中的两个where条件
我有一张像下面这样的桌子 我想要下面的输出 |2010-03-22 | 2 | ab | 1| |2010-03-22 | 2 |如果| 1| |2010-03-22 | 2 |他| 1|mysql查询中的两个where条件,mysql,Mysql,我有一张像下面这样的桌子 我想要下面的输出 |2010-03-22 | 2 | ab | 1| |2010-03-22 | 2 |如果| 1| |2010-03-22 | 2 |他| 1| 尝试使用或代替和: .... date="2010-03-22" OR errors="Yes" GROUP BY QA 您可以通过以下方式执行此操作: SELECT date, COUNT(dom), QA, COUNT(NULLIF(errors, 'No')) FROM reports WHERE d
尝试使用
或代替和:
.... date="2010-03-22" OR errors="Yes" GROUP BY QA
您可以通过以下方式执行此操作:
SELECT date, COUNT(dom), QA, COUNT(NULLIF(errors, 'No')) FROM reports WHERE date="2010-03-22" GROUP BY QA
要解释其工作原理:COUNT
返回非空值的数目。我们可以利用这一优势,将带有'No'
的错误转换为NULL
,这样COUNT
就不会对它们进行计数。我们使用NULLIF
函数来实现这一点,如果第一个参数和第二个参数相等,它将返回NULL
。No,字段本身不是NULL,但是当字段为“No”时,NULLIF(错误,“No”)将返回NULL。如果你愿意,我可以给你举个例子来演示它是如何工作的。
|2010-03-22|2|ab|
|2010-03-22|2|if|
|2010-03-22|2|he|
SELECT date, count(dom), count(errors), QA
FROM reports
WHERE errors="Yes"
GROUP BY QA
|2010-03-22|1|ab|
|2010-03-22|1|if|
|2010-03-22|1|he|
SELECT date, count(dom), QA, count(errors)
FROM reports
WHERE date="2010-03-22"
AND errors="Yes"
GROUP BY QA
|2010-03-22|2|ab|1|
|2010-03-22|2|if|1|
|2010-03-22|2|he|1|
.... date="2010-03-22" OR errors="Yes" GROUP BY QA
SELECT date, COUNT(dom), QA, COUNT(NULLIF(errors, 'No')) FROM reports WHERE date="2010-03-22" GROUP BY QA