MySQL 跨多个表求和

标签 mysql

我有四张 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/

相关文章:

mysql - 找不到匹配的 SQL 类。 Drush 找不到您的数据库连接。错误

PHPMyAdmin 未创建关系

java - 使用来自同一个表注释的两个外键 hibernate

mysql - 将数据从 CSV 文件导入 MySQL 表而不覆盖现有数据

mysql - 我可以在 MySQL 中获取 json 列的唯一/不同值吗?

python - Django-MySQLdb : Symbol not found: _mysql_affected_rows

python - 基础 Python - 变量

c# - MySQL 日期时间显示不正确的时间。 ASP.NET C#

mysql - 如何从 mysql 数据库创建雷达 Chartjs 的下拉列表?

c# - 如何使用mysql和c#比较时间和日期