Mysql 嵌套的select语句子查询返回多行

Mysql 嵌套的select语句子查询返回多行,mysql,sql,Mysql,Sql,我有两张桌子,一张是学生桌,另一张是分数桌 学生包含所有学生信息,如名字、姓氏和唯一ID号 分数包含学生获得的分数 对于每个学生,每年都会存储分数,即第三年开始的学生在分数表中有3个条目 现在我想设计一个查询,其中包含学生信息和所有三年的成绩在一个记录 输出应如下所示: First Name | Last Name | 1年级| 2年级| 3年级我不知道嵌套语句是什么样子,但您希望类似于此: select s.firstname, s.lastname, sum(case

我有两张桌子,一张是学生桌,另一张是分数桌 学生包含所有学生信息,如名字、姓氏和唯一ID号 分数包含学生获得的分数 对于每个学生,每年都会存储分数,即第三年开始的学生在分数表中有3个条目

现在我想设计一个查询,其中包含学生信息和所有三年的成绩在一个记录

输出应如下所示:


First Name | Last Name | 1年级| 2年级| 3年级

我不知道嵌套语句是什么样子,但您希望类似于此:

select
    s.firstname,
    s.lastname,
    sum(case when m.year = m2.minyear then m.mark else 0 end) as `1st Year Marks`,
    sum(case when m.year = m2.minyear+1 then m.mark else 0 end) as `2nd Year Marks`,
    sum(case when m.year = m2.minyear+2 then m.mark else 0 end) as `3rd Year Marks`
from
    students s
    inner join marks m on
        s.student_id = m.student_id
    inner join (select student_id, min(year) as minyear from marks group by student_id) m2 on
        s.student_id = m2.student_id
group by
    s.firstname,
    s.lastname

我在这里做了条件和,以及动态年份,因为学生可能在不同的时间到达。如果你有一个包含“新生”、“大二”等内容的学年表,然后记录学生完成该学年的时间,这会更容易,但我想这会有用的。

试试下面的查询。。我认为学生和分数在列中有学生id


从学生中选择stu.firstname+'|'+stu.lastname+'|'+marks.1styr+'|'+marks.2nd yr+'|'+marks.3rdyr作为stu,marks其中stu.uniqueid=marks.uniqueid

如果您也发布SQL语句,会更容易提供帮助。或者至少发布表的完整定义