📜  如何在SQL中获取具有相同ID和不同表的列的总和? - SQL (1)

📅  最后修改于: 2023-12-03 15:24:36.368000             🧑  作者: Mango

如何在 SQL 中获取具有相同 ID 和不同表的列的总和?

在 SQL 中,有时我们需要根据不同的表获取具有相同 ID 的数据,并将它们的某些列的总和计算出来。下面是一些方法来实现这个目标。

方法 1:使用子查询和 UNION ALL 操作符

可以使用子查询和 UNION ALL 操作符来合并多个表的数据,并计算总和。

SELECT id, SUM(val) AS total_val
FROM (
  SELECT id, val FROM table1
  UNION ALL
  SELECT id, val FROM table2
  UNION ALL
  SELECT id, val FROM table3
) AS combined
GROUP BY id;
方法 2:使用 JOIN 操作符

另一种方法是使用 JOIN 操作符将多个表连接起来,并计算总和。以下是一个示例查询语句:

SELECT t1.id, SUM(t1.val + t2.val + t3.val) AS total_val
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id
JOIN table3 t3 ON t1.id = t3.id
GROUP BY t1.id;
方法 3:使用子查询和 INNER JOIN 操作符

可以使用子查询和 INNER JOIN 操作符来选择具有相同 ID 的数据,并计算总和。以下是一个示例查询语句:

SELECT t1.id, t1.total_val + t2.total_val + t3.total_val AS total_val
FROM (
  SELECT id, SUM(val) AS total_val FROM table1 GROUP BY id
) AS t1
JOIN (
  SELECT id, SUM(val) AS total_val FROM table2 GROUP BY id
) AS t2 ON t1.id = t2.id
JOIN (
  SELECT id, SUM(val) AS total_val FROM table3 GROUP BY id
) AS t3 ON t1.id = t3.id;

以上是三种方法在 SQL 中获取具有相同 ID 和不同表的列的总和。选择最适合您项目需求的方法进行实现即可。