下面是我的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值是表中的值,是默认值还是我的理解错误?任何人都有助于解决我的问题,我需要从两个表中加总任何值(相同或不同)。
答案 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
这将为您提供正确的金额。