Javascript 将mysql的返回结果分组
我几乎精疲力尽地调整这些问题,最后想到把问题贴在这里以获得帮助。我有一个mysql表,如下所示。我正在Nodejs中编码,并使用jdbc连接器访问数据库Javascript 将mysql的返回结果分组,javascript,mysql,node.js,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 当我进行
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}]
}
不考虑JSON语法的优点,您可以使用concat将字符串按自己喜欢的方式连接起来,从而及时完成JSON语法。。您可以使用group_concat在同一行中获取名称的所有结果。。group_concat是一个聚合函数,必须使用group by以适当的方式进行分组
select name, group_concat( concat(score, subject))
from my_table
where class ='8'
group by name
不考虑JSON语法的优点,您可以使用concat将字符串按自己喜欢的方式连接起来,从而及时完成JSON语法。。您可以使用group_concat在同一行中获取名称的所有结果。。group_concat是一个聚合函数,必须使用group by以适当的方式进行分组
select name, group_concat( concat(score, subject))
from my_table
where class ='8'
group by name
使用此查询,如果某些行和列的值为空,我们是否会得到所有结果?@bobby解释得更好…如果您还需要空值,那么您应该正确管理结果。。否则。。使用您的列不为null的位置筛选所选数据,这样您就不会得到null结果感谢您的帮助。实际上,我还有一个专栏叫“老师”。但是,现在所有的教师行都是空的。如果我在上面的查询中包含“teacher”,它将导致空结果。“小组讨论(讨论(分数、主题、教师))”。。。。为什么会这样?“我怎样才能摆脱这种局面?”鲍比。我只能根据你们所写的问题给出答案。。我无法评估关于我不知道的论点的信息。。(无论如何,我认为教师应该是一列而不是一行..如果存储正确的话.在db中..)。。这可能是另一个答案。。所以评估我的答案是否正确。。学习并最终为其他问题发布一个新的正确问题使用此查询,如果有一些行和列具有空值,我们是否可以获得所有结果?@bobby解释得更好…如果您还需要空值,那么您应该正确管理结果。。否则。。使用您的列不为null的位置筛选所选数据,这样您就不会得到null结果感谢您的帮助。实际上,我还有一个专栏叫“老师”。但是,现在所有的教师行都是空的。如果我在上面的查询中包含“teacher”,它将导致空结果。“小组讨论(讨论(分数、主题、教师))”。。。。为什么会这样?“我怎样才能摆脱这种局面?”鲍比。我只能根据你们所写的问题给出答案。。我无法评估关于我不知道的论点的信息。。(无论如何,我认为教师应该是一列而不是一行..如果存储正确的话.在db中..)。。这可能是另一个答案。。所以评估我的答案是否正确。。然后学习,最终你可以为别人的问题发布一个新的合适的问题