我对SQL很新。我试图从我的数据库中检索一些数据。我使用的SQL数据库是MS sql,服务器有三个表可用:
生 等级 Grade_types
我正在尝试从最早的ENROLL_DATE获得100名学生的成绩数据,ENROLL_DATE在学生表中。
这是我尝试的声明,但它不起作用:
Select top (100) * from students order by ENROLL_DATE ASC inner join grades on students.PERSON_ID = grades.PERSON_ID order by ENROLL_DATE
答案 0 :(得分:0)
你非常接近。只能有一个ORDER BY,它必须在最后:
Select top 100 *
from students inner join grades on students.PERSON_ID = grades.PERSON_ID
order by ENROLL_DATE
答案 1 :(得分:0)
假设学生可以有多个年级,那么你想首先选择100名学生,然后为他们检索所有成绩:
Select *
from (select top (100) s.*
from students s
order by ENROLL_DATE ASC
) s inner join
grades g
on s.PERSON_ID = g.PERSON_ID
order by ENROLL_DATE;
请注意,如果年龄较大的学生没有成绩,您可能需要left join
。