0

我有 2 个 mysql 表table 1 和 table 2
表 1包含一个 varchar 类型的字段“subjectcat”,其中包含用逗号分隔的主题 ID(例如 1,2,3)。
表 2包含一个包含学生标记的浮点类型字段“标记”。我想从表 2 中获取分数总和,其中主题 ID 来自表 1。

我有查询

  select t1.subjectcat, sum(t2.mark) 
  from table t1, table t2 
  where t2.subjectid in (t1.subjectcat). 

但是这个查询没有给出正确的总分,而是只给出了第一个主题(subjectid)的标记。

如何修改查询以获得正确的结果?

4

2 回答 2

0

您可以使用FIND_IN_SET()inJOIN来实现您的目标

SELECT t1.subjectcat, SUM(t2.mark) sum_mark
  FROM table1 t1 JOIN table2 t2
    ON FIND_IN_SET(t2.subjectid, t1.subjectcat) > 0

这是SQLFiddle演示

话虽如此,我强烈建议您规范化您的数据库模式。

于 2013-06-09T05:48:25.987 回答
0

由于聚合 SUM(),它只返回一行是正常的。如果它解决了您的问题,请尝试将其放在GROUP BY t2.subjectid查询的末尾。

于 2013-06-09T05:40:17.490 回答