Sql 使用子查询获取已排序的数据

Sql 使用子查询获取已排序的数据,sql,subquery,Sql,Subquery,因此,对于学校作业,我需要输出学生的姓和名,以及前8个已注册的学生,按此排序。我不会担心将其限制为8(当其他一切都正常时,这很容易),但我需要弄清楚我做错了什么,需要在这里做什么。以下是我所拥有的: SELECT student.first_name, student.last_name FROM student WHERE student.student_id IN (SELECT enrollment.student_id FROM enrollment ORDER BY enrollm

因此,对于学校作业,我需要输出学生的姓和名,以及前8个已注册的学生,按此排序。我不会担心将其限制为8(当其他一切都正常时,这很容易),但我需要弄清楚我做错了什么,需要在这里做什么。以下是我所拥有的:

SELECT student.first_name, student.last_name
FROM student 
WHERE student.student_id IN (SELECT  enrollment.student_id
FROM enrollment
ORDER BY enrollment.enroll_date);

因为oracle实际看到的代码如下所示:

SELECT student.first_name, student.last_name
FROM student 
WHERE student.student_id IN (
SELECT enrollment.student_id FROM 
enrollment ) --where the ) should be!!!
ORDER BY enrollment.enroll_date  --and this line just mess up the code delete this. 
发生这种情况的原因是在子查询中尝试按排序。只需通过删除该
顺序,或者在子查询之外使用它,错误就不会再发生了


此外,当您在
中使用
时,在该子查询中使用
order by
没有任何意义。

请解释此查询的错误,例如,结果是什么以及它与您期望得到的结果有何不同。噢,正确:我得到错误:ORA-00907:缺少右括号00907。00000-“缺少右括号”*原因:*操作:第6行第1列出现错误,但我没有缺少括号,因此我不确定它到底在抱怨什么