分组mysql的返回结果

时间:2017-02-04 15:51:33

标签: javascript mysql node.js

我几乎用尽了调整查询,最后想到在这里发布问题以获得帮助。我有一个mysql表如下。我在Nodejs中编码并使用jdbc连接器访问数据库。

name    subject class   score
Harry   science 8   60
John    Science 9   65
Harry   Maths   8   80
Harry   English 9   50
Mike    Maths   8   90
John    English 8   60

当我进行查询时,我需要得到结果"按名称分组"和" class = 8"。我知道我可以返回所有结果" class = 8"然后遍历结果`以形成下面的对象。由于我的真实数据库非常复杂,我希望将mysql本身的返回结果分组如下。可以使用mysql查询吗?如果不能使用查询,那么为了获得以下格式,最好和最安全的代码是什么?

{
Harry:[{score:60, subject: science}, {score:80, subject: Maths}],
John:[{score:60, subject: English}],
Mike:[{score:90, subject: Maths}]
}

1 个答案:

答案 0 :(得分:2)

没有考虑JSON语法的优点,你可以使用concat来及时完成,你可以使用concat来连接字符串。你可以使用group_concat在同一行上获取名称的所有结果.group_concat是一个聚合函数,您必须使用group by以适当的方式分组

  select name, group_concat( concat(score, subject))
  from my_table
  where class ='8'
  group by name