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

Man*_*gde 2 php mysql

我有一张这样的桌子

id(pk)|product_id(fk)|serial(varchar)|status(varchar)
  1   |    2         |      e098     | sold
  2   |    2         |      e008     | faulty
Run Code Online (Sandbox Code Playgroud)

我需要提取的是:

array(faulty=>1,sold=>1)
Run Code Online (Sandbox Code Playgroud)

ii 可以用复杂的查询来完成,有什么简单的查询可以提供帮助吗?我试过这个: SELECT COUNT(id) as product_details.status FROM product_details WHERE product_id=2 GROUP BY status这没有用。

Mar*_*c B 8

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

SELECT SUM(status='sold') AS sold, SUM(status='faulty') AS faulty
FROM ...
Run Code Online (Sandbox Code Playgroud)

的布尔结果status='sold'将被类型转换为整数 0/1,然后求和。

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

SELECT id, status, COUNT(status) AS count
FROM ...
GROUP BY id, status
Run Code Online (Sandbox Code Playgroud)

进而

while(... fetch ...) {
   $results[$row['id']][$row['status']] = $row['count'];
}
Run Code Online (Sandbox Code Playgroud)