select sum(a) from test1 where name in ('01','02','01');
出现条件相同的情况下,数据库会默认有一个01的玩家信息,没有两次,
但是我数据库中要实现有条件的查询,也就是有多少个条件,无论相同和不相同,都按单个计算,然后统计求和,请问有没有高手帮忙解决一下。

解决方案 »

  1.   

    test1表数据
    id    name    a
    1      01     5
    2      02     6
    3      03     10select sum(a) from test1 where name in ('01','02','01'); 结果是11我要的结果应该是16,请问这个应该怎么实现
      

  2.   

    16是两个name为01对应a的值加上02对应a的值的和
      

  3.   

    id    name    a
    1      01    5
    2      02    6
    3      03    10 
    只有一个01?
      

  4.   

    test1表数据 
    id    name    a 
    1      01    5 
    2      02    6 
    3      03    10 select sum(a) from test1 where name in ('01','02','01'); 结果是11 发表于:2008-11-20 15:30:485楼 得分:0 
    引用 4 楼 tanqing008 的回复:
    16是两个name为01对应a的值加上02对应a的值的和 
     
    id    name    a 
    1      01    5 
    2      02    6 
    3      03    10 
    只有一个01? 我条件里面有两个01,我要查询出这两个条件相同的a值,要分开出来,条件相同的不被其过滤掉,而是做为单独条件查询
      

  5.   

    既然要单独条件查询 ,用3个UNION
    SELECT * FROM TT WHERE NAME='01'
    UNION ALL
    SELECT * FROM TT WHERE NAME='02'
    UNION ALL
    SELECT * FROM TT WHERE NAME='01'
      

  6.   

    OR
    统计条件个数,用个数*SUM的值
      

  7.   

    而且我 name值是活的,从别的地方现读取过来地,我想写成活的,如果用union all 肯定是不行的,用in那样,可是用in不能取出相同条件的值相加和了,
    真是矛盾啊,然道都单列查询,一个一个计算,那样数据库会受不了,数据条件太多了
      

  8.   

    test1表数据
    id    name    a
    1      01    5
    2      02    6
    3      03    10 临时表:
    name
    01
    02
    01连接就可以了