主表: ID   NAME   
1    张三 
2    李四
3    小五
子表:
ID   ZID   VALUE
1    1       5
2    1       5
3    2       3
4    2       4结果:
====================
ID   NAME  VALUE(子表)
1    张三    10
2    李四     7
3    小五     0

解决方案 »

  1.   

    mysql> select * from ccc;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | 张三     |
    |    2 | 李四     |
    |    3 | 小五    |
    +------+------+
    3 rows in set (0.00 sec)mysql> select * from cccc;
    +------+------+-------+
    | id   | zid  | value |
    +------+------+-------+
    |    1 |    1 |     5 |
    |    2 |    1 |     5 |
    |    3 |    2 |     3 |
    |    4 |    2 |     4 |
    +------+------+-------+
    4 rows in set (0.00 sec)
    mysql> select ccc.*,sum(cccc.value) from ccc left join cccc
        -> on ccc.id=cccc.zid
        -> group by ccc.name
        -> order by id;
    +------+------+-----------------+
    | id   | name | sum(cccc.value) |
    +------+------+-----------------+
    |    1 | 张三     |              10 |
    |    2 | 李四     |               7 |
    |    3 | 小五    |            NULL |
    +------+------+-----------------+
    3 rows in set (0.00 sec)
      

  2.   

    OR
    select ccc.*,if(ccc.name is not null,sum(cccc.value),NULL) as value from ccc left join cccc
    on ccc.id=cccc.zid
    group by ccc.name
    order by id
      

  3.   

    select a.ID,a.NAME,sum(b.VALUE)
    from 主表 a left join 子表 b on a.ID=b.ZID
    group by a.ID
      

  4.   

    select a.ID,a.NAME,sum(b.VALUE)
    from 主表 a left join 子表 b on a.ID=b.ZID
    group by a.ID,a.name
      

  5.   

    mysql> select c1.id, c1.name, ifnull(sum(c2.value),0) from c1 left join c2 on c1.id=c2.zid group by
    c1.id;
    +----+------+-------------------------+
    | id | name | ifnull(sum(c2.value),0) |
    +----+------+-------------------------+
    |  1 | 张三 |                      10 |
    |  2 | 李四 |                       7 |
    |  3 | 小五 |                       0 |
    +----+------+-------------------------+
    3 rows in set (0.03 sec)