MySQL SELECT 列 COUNT(name) WHERE 条件 GROUP BY 列?

标签 mysql count group-by

嘿,这是我正在使用的 SQL 语句

$sql = "SELECT number, COUNT(name) FROM people WHERE id='$id' GROUP BY number";  
$result = mysql_query($sql);

while($row = mysql_fetch_array($result)){
$statarray['stat'.$i] = $row['COUNT(name)'];
$i++; }

数字列针对每个名称存储 0、1、2 或 3,因此数组返回总计每个数字有多少名称。这工作正常。

唯一的问题是,如果所有的名字都存储了一个数字 1,我的数组条目“stat0”不会告诉我有多少个 0,因为它被 1 的数量所取代(这是因为有数组中没有 0,所以第一个输出是 1)..

我如何找出有多少名字的数字列中有 0s 1s 2s 和 3s,包括什么时候没有?.. 提前致谢。

最佳答案

SELECT  numbers.number ,
        COUNT(name)
FROM    ( SELECT    0 AS number
          UNION ALL
          SELECT    1
          UNION ALL
          SELECT    2
          UNION ALL
          SELECT    3
        ) numbers
        LEFT JOIN people ON people.number = numbers.number AND id='$id' 
GROUP BY numbers.number

或者如果您根据评论有一个永久数字表

SELECT  numbers.number ,
        COUNT(name)
FROM    numbers
        LEFT JOIN people ON people.number = numbers.number
                            AND id = '$id'
WHERE   numbers.number BETWEEN 0 AND 3
GROUP BY numbers.number

关于MySQL SELECT 列 COUNT(name) WHERE 条件 GROUP BY 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7213853/

相关文章:

mysql - 防止MySQL中的重复输入(例如,当快速调用多次插入请求时)

MySQL 连接查询不使用索引?

mysql - 我应该如何更改我的 sql 语句才能到达此表?

mySQL 排除计数列(如果低于)

python - Groupby 并使用自定义函数执行逐行计算

ios - 核心数据 - 在 Group By 中使用 transient 属性

php - 获取过去一小时内对我的 mysql 数据库的所有查询的数量?

r - 计算 R 中的所有重复值

php - 计算 Mysql 表上的相同值

r - 从变量分组的数据框中搜索并删除异常值