如何在MySQL中对联合查询中的多个字段求和?
我目前正在学习如何在查询中使用如何在MySQL中对联合查询中的多个字段求和?,mysql,ms-access-2013,Mysql,Ms Access 2013,我目前正在学习如何在查询中使用MySQL,我遇到了一个难题 目前,我有两个查询从多个表中获取数据。两个查询都包含相同数量的列字段和字段名 为简单起见,查询的输出如下所示: QueryOne: FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree data1 | data11 | data111 | 3 | 0 | 0 data2 | dat
MySQL
,我遇到了一个难题
目前,我有两个查询从多个表中获取数据。两个查询都包含相同数量的列字段和字段名
为简单起见,查询的输出如下所示:
QueryOne:
FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree
data1 | data11 | data111 | 3 | 0 | 0
data2 | data22 | data222 | 0 | 1 | 0
data3 | data33 | data333 | 0 | 0 | 2
data4 | data44 | data444 | 0 | 4 | 0
data5 | data55 | data444 | 0 | 0 | 1
查询二:
FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree
data1 | data11 | data111 | 1 | 0 | 0
data1 | data11 | data111 | 0 | 0 | 2
data6 | data66 | data666 | 0 | 5 | 0
两个查询都包含FieldOne FieldThree的相同数据,但CountOne CountThree可能包含不同的值
在任何情况下,数据都不会包含所有3个字段CountOne、CountTwo、CountThree
中的值,而只包含这3个字段中的1中的值
我正在尝试创建一个单独的联合查询
,该查询具有以下输出:
FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree
data1 | data11 | data111 | 4 | 0 | 0
data1 | data11 | data111 | 0 | 0 | 2
data2 | data22 | data222 | 0 | 1 | 0
data3 | data33 | data333 | 0 | 0 | 2
data4 | data44 | data444 | 0 | 4 | 0
data5 | data55 | data444 | 0 | 0 | 1
data6 | data66 | data666 | 0 | 5 | 0
基本上,如果在FieldOne
中有多个相同数据的实例,并且对于相同数据的多个实例,在相同的CountOne
、CountTwo
或CountThree
中有一个值,我希望获得该字段的和,并按FieldOne
对该数据进行分组
但是,如果同一数据有多个实例,但它在不同的Count
字段中包含一个值,那么查询应该为它创建一个单独的记录,如示例中所示,data1
同时包含CountOne
和CountTwo
字段中的值
我在Access 2013的SQL视图中使用联合查询做了类似的操作
:
SELECT *
FROM [QueryOne]
ORDER BY FieldOne
UNION SELECT *
FROM [QueryTwo]
ORDER BY FieldTwo;
然而,由于我的知识有限,我一直致力于如何一次性将我想要的内容合并到上述代码中,而不是创建另一个单独的查询。您可以根据union的结果使用select with sum和group by
select FieldOne
, FieldTwo
, FieldThree
, sum(CountOne )
, sum(CountTwo )
, sum(CountThree )
from (
Select FieldOne
, FieldTwo
, FieldThree
, CountOne
, CountTwo
, CountThree
FROM my_view1
UNION ALL
Select FieldOne
, FieldTwo
, FieldThree
, CountOne
, CountTwo
, CountThree
FROM my_view2
) T
group by FieldOne
, FieldTwo
, FieldThree
order by FieldOne
如果要合并不同的值,可以使用UNION;如果要合并联合选择的所有结果,可以使用UNION ALL
并对union subselect中查询的用法进行“稍微混淆”
select FieldOne
, FieldTwo
, FieldThree
, sum(CountOne )
, sum(CountTwo )
, sum(CountThree )
from (
Select FieldOne
, FieldTwo
, FieldThree
, CountOne
, CountTwo
, CountThree
FROM ( select col1 as FieldOne, col2 as FieldTwo .....
from ...
where
) TT_A
UNION ALL
Select FieldOne
, FieldTwo
, FieldThree
, CountOne
, CountTwo
, CountThree
FROM ( select col1 as FieldOne, col2 as FieldTwo .....
from ...
where
) TT_B
) T
group by FieldOne
, FieldTwo
, FieldThree
order by FieldOne
我想你也希望在输出中包含data2的值?@Nick是的,错过了那一个…问题UpdateAccess似乎是一个奇怪的环境,在其中学习MySQL很抱歉,但这一切都可以在Access的SQL视图
中完成?为什么不。。使用您的视图,而不是my_table1和my_table2_name@Andre ... 对的非常感谢。。复制和粘贴错误。。回答更新抱歉,我对从my_table 1
和my_table 2
中选择SELECT
有点困惑…我的两个查询都包含大量表,它们通过关系组合得到FieldOne、FieldTwo、FieldThree、CountOne、CountTwo,CountThree
…我如何在我的联合查询中使用它?…我不应该引用我的查询一个和查询两个?答案已更新。。为您的子查询提供建议。。希望是明确的。。