SQL1SELECT
SUM(Money1),SUM(Money2),SUM(Money3) FROM
(
SELECT
Money1,Money2,Money3
FROM
table1
UNION
SELECT
Money1,Money2,Money3
FROM
table2
) AS total;
假如 我现在合计 Money1 和 Money2 如下
SQL2SELECT
SUM(Money1),SUM(Money2) FROM
(
SELECT
Money1,Money2
FROM
table1
UNION
SELECT
Money1,Money2
FROM
table2
) AS total;如果 table1 里的 Money2 和 table2 里的 Money2 都没有重复的内容 那么 计算出来的 SUM(Money2) 是正确的,但是如果
比如 table1 里的 Money2 有两个相同的 201 201 那么就会少合计一个201 如果是三个那么就是少2个.这个是什么情况?
但是如果我有三个字段 例如像SQL1那样多了个Money3 这样计算又是正常的,我还没测试 Money3如果有两个一样的会不会出现这种事情.是不是我的SQL语句写得有问题?还是?

解决方案 »

  1.   

    测试了一下 在Money3里如果有重复的内容 结果也是正常的...难道......mysql  Ver 14.14 Distrib 5.5.20, for debian6.0 (i686) using readline 5.1传说中的bug...?导出表 到win下测试测试....
      

  2.   

    觉得是union 去掉了重复。你用union all试试。
      

  3.   

    好的,乔丹。刚在洗澡的时候我也在想用UNION ALL,果然如你所诉 用UNION ALL 正常了。
    刚查了一下注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。100分送上,望笑纳,哈哈哈
      

  4.   

    http://hi.baidu.com/fc_lamp/blog/item/678d87db249e97cab6fd48d6.html