Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql查询组并显示可能的值_Mysql_Sql - Fatal编程技术网

mysql查询组并显示可能的值

mysql查询组并显示可能的值,mysql,sql,Mysql,Sql,我在找awser,但在网上找不到(可能是因为我不知道正确的术语)。我正在搜索一个查询,该查询对我的值进行分组,并显示预定义值的零 我的表的值范围为0-5(示例1,0,4,4,0,0,4,2,1,5,0) 我需要一个始终显示所有数字(也带有零值)的查询: nr |金额 0 | 4 1 | 2 2 | 1 3 | 0 4 | 3 5 | 1 这可能吗 问候,Len创建一个单列为“num”的数字表,并插入所有数字(0-5) 然后执行左连接查询并按num分组,如下所示: SELECT num

我在找awser,但在网上找不到(可能是因为我不知道正确的术语)。我正在搜索一个查询,该查询对我的值进行分组,并显示预定义值的零

我的表的值范围为0-5(示例1,0,4,4,0,0,4,2,1,5,0)

我需要一个始终显示所有数字(也带有零值)的查询:

nr |金额
0 | 4
1 | 2
2 | 1
3 | 0
4 | 3
5 | 1

这可能吗


问候,Len

创建一个单列为“num”的数字表,并插入所有数字(0-5)

然后执行左连接查询并按num分组,如下所示:

SELECT num, SUM(amount) AS total
FROM amounts LEFT JOIN numbers ON amounts.nr=numbers.num
GROUP BY num;

这是你需要的。这假设您预先知道值0-5是表中唯一可能存在的值。如果存在其他值,则可以,但不计算它们

select m.nr, ifnull(m.cnt,0) as amount

from 
(
    select * from 
    (
        select 0 as nr
        union all
        select 1 
        union all
        select 2
        union all
        select 3
        union all
        select 4
        union all
        select 5
    ) t1 

    left join 

    (
        select v, count(*) as cnt from
        test
        group by v

    ) t2 on t1.nr = t2.v 

) m;
SQL Fiddle在此:


在您的示例中,数字5的金额应为1。