如何计算mysql中同一列中的不同值?

时间:2015-07-03 18:58:28

标签: php mysql

我有一张这样的表

id(pk)|product_id(fk)|serial(varchar)|status(varchar)
  1   |    2         |      e098     | sold
  2   |    2         |      e008     | faulty

我需要提取的是:

array(faulty=>1,sold=>1)

我可以使用复杂的查询来完成,是否有任何SIMPLE查询可以提供帮助? 我试过这个: SELECT COUNT(id) as product_details.status FROM product_details WHERE product_id=2 GROUP BY status哪些无效。

2 个答案:

答案 0 :(得分:4)

(ab)使用mysql的自动类型转换:

SELECT SUM(status='sold') AS sold, SUM(status='faulty') AS faulty
FROM ...

status='sold'的布尔结果将被强制转换为整数0/1,然后总结。

另一种选择只是进行常规查询,然后在客户端代码中进行透视:

SELECT id, status, COUNT(status) AS count
FROM ...
GROUP BY id, status

然后

while(... fetch ...) {
   $results[$row['id']][$row['status']] = $row['count'];
}

答案 1 :(得分:1)

你想要查询状态,就像这样。

SELECT status, COUNT(id) as count FROM product_details WHERE product_id=2 GROUP BY status