嘿,这是我正在使用的 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/