Mysql union不会对相同的值求和

时间:2018-02-16 09:14:43

标签: mysql

下面是我的mysql示例代码

SELECT ROUND(SUM(final.spend),4) as tot_spend
FROM 
(SELECT 1 as spend FROM `tab1` as tds WHERE 1
UNION
SELECT 1 as spend  FROM `tab2` as obm  WHERE 1
) as final

为了更好地理解,我在查询中将列值替换为1,因为来自两个表的值相同,如果在查询之上运行,我得到结果1,如果我为Eg更改任何一个表值,则它不会对该值求和。将tab2值更改为2并运行表示它显示3,因为我理解两个表中的值是否相同意味着SUM不会工作,不同意味着它的SUM值是表中的值,是默认值还是我的理解错误?任何人都有助于解决我的问题,我需要从两个表中加总任何值(相同或不同)。

1 个答案:

答案 0 :(得分:3)

默认情况下,UNION运算符仅选择不同的值。要允许重复值,请使用UNION ALL

SELECT ROUND(SUM(final.spend),4) as tot_spend
FROM 
(SELECT 1 as spend FROM `tab1` as tds WHERE 1
UNION ALL
SELECT 1 as spend  FROM `tab2` as obm  WHERE 1
) as final

这将为您提供正确的金额。