【问题标题】:Mysql table joiningMysql 表连接
【发布时间】:2013-06-05 02:22:05
【问题描述】:

我有 2 个 mysql 表 表 1 和表 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)的标记。

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

【问题讨论】:

  • 可以发一下表结构吗?
  • 标准化你的数据库架构,你就不会有这样的问题

标签: mysql


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以在JOIN 中使用FIND_IN_SET() 来实现您的目标

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

    这里是SQLFiddle演示

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

    【讨论】:

      猜你喜欢
      • 2014-01-06
      • 2011-06-14
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 2021-12-25
      相关资源
      最近更新 更多