我的数据库有两个表。
第一个表 task_groups 有一个名为keyid
的唯一标识符。
第二个表任务包含不同任务组的任务。该表有两列advance
和task_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
答案 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;