解决方案 »

  1.   

       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
      

  2.   

    描述请再详细些,没看明白你要统计的规律。假如我再多一条id=5,val=4的记录,你希望出现什么结果?
      

  3.   


    不会出现这种情况如果id为5 那么 val只会等于2,是根据其他同一个记录得到的。
    id3,和id4 是根据其他表的两个记录得到的。我用
    sum(if(val=val,val /count(val) ,val)) as resm   这个结果是不对的。    我的想法是  如果两行的val字段相等,其实就不操作,不同才会相加
      

  4.   

    select sum(val)
    from (
    select distinct val from a表
    ) t
      

  5.   

    我的a表结构是
    id  vala  xxx
    1   2      c
    2  3    b
    4  4     b
    5  5     bb表是
    id    valb   toaid  yyy
    1     11    1
    2     22    1
    3     3    4
    4     4     2
    5     6    2根据a表xxx字段  得到valb的和  和vala的值。比如
    c valb的值和vala的值 分别等于  33  和 2
    b 分别等于  13 和 12
      

  6.   

    自己搞定了。原来  sum(distinct a.vala) 就行了,还是衷心感谢各位
      

  7.   

    mysql> select a.xxx,sum(distinct a.vala) vala,sum(b.valb) valb from a left join b on a.id=b.toaid group by a.xxx;
    +------+------+------+
    | xxx  | vala | valb |
    +------+------+------+
    | b    |   12 |   13 |
    | c    |    2 |   33 |
    +------+------+------+
    2 rows in set (0.01 sec)