php - mysql如何统计同一列中的不同值?

标签 php mysql

我有一张这样的 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/

相关文章:

php - 带有两个where子句的mysql查询

php - 将特殊字符插入数据库

mysql - 在 MySQL 中,如何更新现有行的某些列并从引用表中插入新行?

mysql - MySQL 同一行中两个行字段之间的数据交换

php - 图片无法显示,但已上传到服务器

php - $wpdb->update 或 $wpdb->insert 导致在引号前添加斜杠

php - 插入数据库php后,表情符号显示为问号

PHP注册表不保存

mysql - 获取名称以特定子字符串开头

mysql - 如何显示所有测验、学生的分数以及他们是否参加了 4 个表格中的测验