Mysql表加入

时间:2013-06-09 05:33:12

标签: mysql

我有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)的标记。

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

2 个答案:

答案 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 演示

话虽如此,我强烈建议您规范化数据库架构。

相关问题