我有2个mysql表表1和表2 。
表1 包含varchar类型的字段'subjectcat',其中包含用逗号分隔的主题ID(例如1,2,3)。
表2 包含float类型的字段'mark',其中包含student标记。我想从表2中得到主题ID来自表1的标记总和。
我有查询
select t1.subjectcat, sum(t2.mark)
from table t1, table t2
where t2.subjectid in (t1.subjectcat).
但是此查询无法给出正确的总和标记,但仅给出第一个主题(subjectid)的标记。
如何修改查询以获得正确的结果?
答案 0 :(得分:0)
由于聚合SUM(),它只返回一行是正常的。如果问题解决了问题,请尝试将GROUP BY t2.subjectid
放在查询的末尾。
答案 1 :(得分:0)
您可以在FIND_IN_SET()
中使用JOIN
来实现目标
SELECT t1.subjectcat, SUM(t2.mark) sum_mark
FROM table1 t1 JOIN table2 t2
ON FIND_IN_SET(t2.subjectid, t1.subjectcat) > 0
这是 SQLFiddle 演示
话虽如此,我强烈建议您规范化数据库架构。