gpt4 book ai didi

mysql - 如何对两个或多个相似表求和

转载 作者:行者123 更新时间:2023-11-29 13:57:57 24 4
gpt4 key购买 nike

有什么方法可以将 MySQL 中两个相似表的值相加吗?

例如,我有以下两个表:

表 1:

id | field1 | field2 | ... | fieldN
1 | 5 | 6 | ... | 32
2 | 25 | 5 | ... | 2
...| ... | ... | ... | ...
N | 4 | 1 | ... | 30

表2:

id | field1 | field2 | ... | fieldN
1 | 4 | 5 | ... | 4
2 | 2 | 5 | ... | 3
...| ... | ... | ... | ...
N | 4 | 5 | ... | 0

我正在考虑在这些表上使用 UNION ALL,因为这些表具有相同的字段,然后在每个字段 GROUP BY ID 上使用 SUM。

在第一个查询中我会得到:

id | field1 | field2 | ... | fieldN
1 | 5 | 6 | ... | 32
1 | 4 | 5 | ... | 4
2 | 25 | 5 | ... | 2
2 | 2 | 5 | ... | 3
...| ... | ... | ... | ...
N | 4 | 1 | ... | 30
N | 4 | 5 | ... | 0

...最后是 SUM:

id | field1 | field2 | ... | fieldN
1 | 9 | 11 | ... | 38
2 | 27 | 10 | ... | 5
...| ... | ... | ... | ...
N | 8 | 6 | ... | 30

还有其他方法可以做到这一点吗?

最佳答案

这里有两个选择。

首先是进行连接,假设它们具有相同的 id:

select t1.id, (t1.field1 + t2.field1) as Field1, . . .
from t1 join
t2
on t1.id = t2.id

当然,您可以将其更改为左外连接,但是您必须在算术计算中处理 NULL 值。

第二个是你的方法:

select id, sum(field1) as Field1, . . .
from ((select t1.*
from t1
) union all
(select t2.*
from t2
)
) t
group by id

你做什么在某种程度上是一个偏好问题。我倾向于认为 join 会优化得更好(特别是使用正确的索引)。但是,如果两个表中的 id 集不同,union all 可以更轻松地处理这种情况。

关于mysql - 如何对两个或多个相似表求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15531484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com