我有四张 table ,每张看起来都像
ID Value
1 23.43
2 34.23
1 32.23
3 11.25
每个表中的每个 ID 可以有多个值条目。每个 ID 在所有四个表中都有值。
我想编写一个查询,为我提供每个 ID 的聚合结果。我想添加两个表的值并从聚合中减去另外两个表的值。
如果用伪代码编写:
foreach ID
sumTable1 = sum(Table1.value) where ID=ID
sumTable2 = sum(Table2.value) where ID=ID
sumTable3 = sum(Table3.value) where ID=ID
sumTable4 = sum(Table4.value) where ID=ID
print ID . ": " . sumTable1+sumTable2-sumTable3-sumTable4
我可以在单个 mySQL 查询中执行此操作吗?
最佳答案
这尚未经过测试,但可能会按预期工作。
SELECT
t1.ID,
(SUM(t1.Value)+SUM(t2.Value)-SUM(t3.Value)-SUM(t4.Value)) AS aggregate_sum
FROM
t1 LEFT JOIN t2 ON t1.ID = t2.ID
LEFT JOIN t3 ON t1.ID = t3.ID
LEFT JOIN t4 ON t1.ID = t4.ID
GROUP BY t1.ID
编辑将它们全部更改为LEFT JOIN
,以防任何表中都没有该 ID...
关于MySQL 跨多个表求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7841049/