我几乎用尽了调整查询,最后想到在这里发布问题以获得帮助。我有一个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}]
}
答案 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