php - 统计同一个表的某个状态列出现的频率

标签 php mysql count records

我有一张这样的表:

id model status
1  Star  1
2  Star  0
3  Bana  0
4  Ship  1
5  Star  1
6  Ship  1
7  Ship  0
8  Bana  1
9  Bana  1
10 Ship  0
11 Ship  0

我想要这个:

Model On Off
Ship  2  3 
Star  2  1
Bana  2  1

我尝试过这个,但时间太长了,当我表上有 8000 条记录时......

SELECT a.model,
  (SELECT count(b.status) lib
   FROM SpaceShips b
   WHERE a.model=b.model
     AND b.status='1'
   GROUP BY b.model) ON,
  (SELECT count(c.status) blo
   FROM SpaceShips c
   WHERE a.model=c.model
     AND c.status='0'
   GROUP BY c.model) OFF
FROM SpaceShips a
WHERE (a.status='0'
       OR a.status='1')
GROUP BY model
ORDER BY model

最佳答案

您可以通过以下方式执行此操作:

SELECT
  model,
  SUM(status='0') AS Off,
  SUM(status='1') AS On
FROM
  SpaceShips
GROUP BY
  model

-我在您的示例所需输出中看不到任何顺序,因此我跳过了它

关于php - 统计同一个表的某个状态列出现的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19634582/

相关文章:

php - Mysql 查询使用 LEFT JOIN 并具有来自另一个表的 OrderID 计数...卡住

php - 难题 - 如何从 PHP 中提取图像的 'colorify' 部分?

php - 用php存储 "Time only"值的方法是什么?

php 从二维 session 数组中取消设置数组

Java 使用 where 和 concat 在查询中添加列

php - mysql 的 php 扩展

mysql - SQL 语法错误;检查与您的 MySQL 服务器版本相对应的手册,了解在附近使用的正确语法

c# - 使用 LINQ 获取嵌套列表的计数列表

python - Pandas (如何修复): List is actually string and the value of length is misleading

php - 从表结果中获取 id