Mysql SQL查询将多个关系填充为带有条件的数组类型的字段
假设我有以下表格: 学生Mysql SQL查询将多个关系填充为带有条件的数组类型的字段,mysql,sql,Mysql,Sql,假设我有以下表格: 学生 ID --- Name A --- Andy B --- Billy C --- Chris 得分 然后我想查询至少有1分===5分的学生,并填充他们的所有分数 在上面的例子中,我想要这个结果 [ { id: "A", name: "Andy", scores: [ { subject: "Math", score: 6
ID --- Name
A --- Andy
B --- Billy
C --- Chris
得分
然后我想查询至少有1分===5分的学生,并填充他们的所有分数
在上面的例子中,我想要这个结果
[
{
id: "A",
name: "Andy",
scores: [
{
subject: "Math",
score: 6
},
{
subject: "English",
score: 5
}
]
},
{
id: "B",
name: "Billy",
scores: [
{
subject: "Math",
score: 8
},
{
subject: "English",
score: 5
}
]
}
]
我想知道ORM查询如何在原始SQL查询中从何处进行选择。我感谢您的帮助,提前谢谢。我不知道您想要什么结果。但其思想是连接和聚合:
select s.id, s.name,
group_concat(sc.subject, ':', score) as subject_scores
from students s join
scores sc
on s.id = sc.studentid
group by s.id, s.name
having sum(sc.score = 5) > 0;
或者如果5是最高分,则:
having sum(sc.score) = 5
如果您想要JSON中的结果集,那么显然您会使用JSON函数而不是字符串函数。在CTE中使用StudentID的分区上的MAXScore。感谢您的回复,我更新了我的问题,如果条件不大于/小于运算符,查询将如何进行,我的意思是,这是我们需要执行子查询才能实现的条件。如果是这样,请在CTE中通过StudentID在分区上使用SUMScore=5。感谢您的回复,如果条件不仅仅大于运算符,那么我们如何查询它,我已经更新了我的问题,请看一看。thanks@QuocVanTangSUMsc.得分=5分;
having sum(sc.score) = 5