mysql - 对来自不同表的同一查询中的两列求和

标签 mysql

我有一个 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/

相关文章:

php - 使用接受数组的 WHERE 子句进行 SQL 查询

mysql - 连接mysql中的4个表

php - mysql服务器、用户名和密码在php网站上是公开的吗? (mysql_连接)

Django 中的 Mysql OPTIMIZE TABLE 命令

mysql - 计算cakephp 3.x中数据库记录的总价

php - 如何将 select 中的内部查询转换为 Eloquent laravel 5.4

php - 无法与php建立数据库连接

php - 禁用某些 MySQL 查询的复制

MySQL:如果其中一个返回 NULL,则 INNER JOIN 会使 2 个 LEFT JOIN 崩溃

mysql - 左连接不返回所有行