我有一个 2015 年和 2016 年的表,它们具有相同的列。我正在尝试显示一列不同年份的总计。
SELECT t16.`Dep Name`, sum(t16.`number_courses`) AS `Total 16`, sum(t15.`number_courses`)
AS `Total 15` FROM `table_16` t16, `table_15` t15
GROUP BY t16.`Dep Name`
这给了我错误的总计,但是当我单独计算总计时,它们工作得很好。我在这里做错了什么?
编辑:好的,我的主要目标是创建一个 View ,但显然是根据 MySQL Documentation View 不支持子查询。有没有其他方法可以获得相同的结果并创建 View ?
最佳答案
您实际上是在执行 CROSS JOIN
,它会生成两个表的行的笛卡尔积。
您可以改为先聚合然后然后加入:
SELECT t16.`Dep Name`, `Total 16`, `Total 15`
FROM (
SELECT `Dep Name`,
sum(`number_courses`) AS `Total 16`
FROM `table_16`
GROUP BY `Dep Name`) t16
JOIN (
SELECT `Dep Name`,
sum(`number_courses`) AS `Total 15`
FROM `table_15`
GROUP BY `Dep Name`
) t15 ON t16.`Dep Name` = t15.`Dep Name`
关于mysql - 对来自不同表的同一查询中的两列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37413859/