MySQL 选择并计算具有不同 where 子句的 2 列

标签 mysql subquery

我觉得应该很容易,但是根本就不行。我有一个表,我想生成一个显示分组项目的图表,其中一个 where 子句(第 1 列)应该显示状态为 0 的条目,而另一个 where 子句(第 2 列)应该显示带有状态 1.

如果我只执行一个查询,它工作正常,但我想在一个组合查询中同时拥有这两个(状态 0 和状态 1)。

状态0查询:

SELECT item,quantity, COUNT(status) FROM `table` 
WHERE `retry` = 1
AND `status` = 0
GROUP BY item,quantity
ORDER BY COUNT(status) DESC

状态1查询:

SELECT item,quantity, COUNT(status) FROM `table` 
WHERE `retry` = 1
AND `status` = 1
GROUP BY item,quantity
ORDER BY COUNT(status) DESC

我尝试将两者结合起来(没有用)

SELECT t1.item,t1.quantity, COUNT(t2.status), COUNT(t3.status) FROM `table` AS t1
LEFT JOIN (SELECT item,status FROM `table` WHERE `status` = '0' AND `retry` = 1 GROUP BY item,quantity) AS t2
ON t1.ndc = t2.ndc
LEFT JOIN (SELECT item,status FROM `table` WHERE `status` = '1' AND `retry` = 1 GROUP BY item,quantity) AS t3
ON t1.ndc = t3.ndc
WHERE 1
GROUP BY t1.item,t1.quantity
ORDER BY COUNT(t2.status) DESC

最佳答案

请检查这个,它对你有用吗?

请试试这个

 SELECT
    item,quantity,
    COUNT(case when status =1 then 1 end) AS status1,
    COUNT(case when status =0 then 1 end) AS status0
  FROM table

关于MySQL 选择并计算具有不同 where 子句的 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30806562/

相关文章:

sql - 如何使用 BETWEEN 运算符比较两个 SELECT 子查询?

mysql - 如何在 MySQL 中使用 ORDER BY FIELD 和子查询?

sql - 使用DISTINCT和LIMIT的子查询

mysql - 使用子查询和连接优化的查询

MySQL和波兰语

PHP OOP MySQL 注册系统 MySQL_NUM_Row 错误

mysql - 更新(concat)错误 1111 (HY000) - 组函数的使用无效

MySQL 还不支持 Limit&& in/all?

php - 使用 PHP 基于特定日期显示 MySQL 数据

php - 如何提高这个mysql查询的速度