小弟想设计一个查询,用来合计两张有不同数量的名字的数据。
表结构如下
表A
名字      数值
A        1
B        1
D        1
表B
名字       数值
B        1
C        1现在我想设计一个查询来达到以下效果
名字      合计
A        1
B        2
C        1
D        1
写到这里不会写了,请各位高手指点
     

解决方案 »

  1.   

    SELECT 名字, 数值=SUM(数值) FROM
    (
    SELECT * FROM 表A
    UNION ALL
    SELECT * FROM 表B
    ) T
    GROUP BY 名字
    --ORDER BY 名字
      

  2.   

    先谢谢wwwwgou,你的思路是对的
    但我发现一个问题,是我描述出错了,
    我的表A和表B列的数目不同,表A有三列,表B只有两列
    表的结构应该是
    表A
    名字    数值1     数值2
    A         1         1
    B         1         1
    D         1         1         
    表B
    名字    数值1
    B         1
    C         1
    结果
    名字    合计1     合计2
    A         1        1
    B         2        1
    C         1        0
    D         1        1
     
      

  3.   

    因为列数不同所以不能用UNION ALL了,是我太笨了问题都没有描述清楚, 不好意思
      

  4.   

    道理是一样的,在第二个表增加一列即可SELECT 名字, 合计1=SUM(数值1),合计2=SUM(数值2)  
    FROM(    
     SELECT * FROM 表A    
     UNION ALL    
     SELECT *,0 FROM 表B
    ) T
    GROUP BY 名字