我有一张这样的 table
id(pk)|product_id(fk)|serial(varchar)|status(varchar)
1 | 2 | e098 | sold
2 | 2 | e008 | faulty
我需要提取的是:
array(faulty=>1,sold=>1)
我可以用一个复杂的查询来完成,是否有任何简单的查询可以提供帮助?
我试过这个:
SELECT COUNT(id) as product_details.status FROM product_details WHERE product_id=2 GROUP BY status
无效。
最佳答案
(ab)使用mysql的自动类型转换:
SELECT SUM(status='sold') AS sold, SUM(status='faulty') AS faulty
FROM ...
status='sold'
的 bool 结果将被类型转换为整数 0/1,然后求和。
另一种选择是进行常规查询,然后在客户端代码中进行数据透视:
SELECT id, status, COUNT(status) AS count
FROM ...
GROUP BY id, status
然后
while(... fetch ...) {
$results[$row['id']][$row['status']] = $row['count'];
}
关于php - mysql如何统计同一列中的不同值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31212833/