查询以获取MYSQL中列的子集的总和

时间:2015-06-21 20:18:13

标签: mysql sql

我的数据库有两个表。

第一个表 task_groups 有一个名为keyid的唯一标识符。

第二个表任务包含不同任务组的任务。该表有两列advancetask_group(这些是我的问题中唯一的两个列)。

同一任务组中的所有任务在task_group.keyid列中都具有task_group的值。

我想要做的是获得每组中任务的所有进展的总和。

这就是我的尝试:

SELECT SUM(t.advance) 
FROM tasks AS t, task_groups AS tg 
WHERE tg.keyid = t.task_group;

然而,这只给我一个结果,我应该获得与任务组一样多的结果。

任何人都可以帮助我吗?

编辑:我还想将此更新为名为avg的任务组列。我按照指示使用了组,因为它适用于选择,但更新没有。这是我试过的查询:

UPDATE task_groups tg  SET tg.avg = SUM(t.advance) FROM tasks t WHERE (t.task_group = tg.keyid) AND t.task_group != -1 GROUP BY t.task_group

1 个答案:

答案 0 :(得分:2)

您的查询确实需要group by。但是,您应该使用明确的join语法编写它:

SELECT t.task_group, SUM(t.advance)
FROM tasks t JOIN
     task_groups tg 
     ON tg.keyid = t.task_group
GROUP BY t.task_group;

但是,这个版本太过分了。你甚至不需要join

SELECT t.task_group, SUM(t.advance)
FROM tasks t
GROUP BY t.task_group;