这个UNION 是什么情况...

黄袍披身 2012-03-16 10:08:48
SQL1

SELECT
SUM(Money1),SUM(Money2),SUM(Money3) FROM
(
SELECT
Money1,Money2,Money3
FROM
table1
UNION
SELECT
Money1,Money2,Money3
FROM
table2
) AS total;


假如 我现在合计 Money1 和 Money2 如下
SQL2

SELECT
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语句写得有问题?还是?
...全文
91 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄袍披身 2012-03-16
  • 打赏
  • 举报
回复
好的,乔丹。刚在洗澡的时候我也在想用UNION ALL,果然如你所诉 用UNION ALL 正常了。
刚查了一下

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

100分送上,望笑纳,哈哈哈
[Quote=引用 2 楼 jordan102 的回复:]

觉得是union 去掉了重复。你用union all试试。
[/Quote]
一起混吧 2012-03-16
  • 打赏
  • 举报
回复
觉得是union 去掉了重复。你用union all试试。
黄袍披身 2012-03-16
  • 打赏
  • 举报
回复
测试了一下 在Money3里如果有重复的内容 结果也是正常的...难道......

mysql Ver 14.14 Distrib 5.5.20, for debian6.0 (i686) using readline 5.1

传说中的bug...?

导出表 到win下测试测试....

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧