Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将mysql的返回结果分组_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript 将mysql的返回结果分组

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 当我进行

我几乎精疲力尽地调整这些问题,最后想到把问题贴在这里以获得帮助。我有一个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}]
}

不考虑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中..)。。这可能是另一个答案。。所以评估我的答案是否正确。。然后学习,最终你可以为别人的问题发布一个新的合适的问题