我得到了一个“答案”;标识符;执行SQL查询时出错
我不确定如何修复引用registration.student\u id的错误我得到了一个“答案”;标识符;执行SQL查询时出错,sql,oracle,join,subquery,min,Sql,Oracle,Join,Subquery,Min,我不确定如何修复引用registration.student\u id的错误 SELECT std_name, course# FROM student INNER JOIN (SELECT min(grade) FROM enrollment GROUP BY grade) ON enrollment.student_id = student.student_id; 在Oracle SQL Developer中获取以下错误: ORA-00904: "ENROLLMENT"
SELECT std_name, course#
FROM student
INNER JOIN (SELECT min(grade) FROM enrollment GROUP BY grade)
ON enrollment.student_id = student.student_id;
在Oracle SQL Developer中获取以下错误:
ORA-00904: "ENROLLMENT"."STUDENT_ID": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 22 Column: 4
子查询不返回
学生id
,因此不能在外部查询中引用它。似乎您想要每个学生的最低分数,因此您还需要修复子查询的groupby
子句
我建议:
SELECT s.std_name, e.min_grade
FROM student s
INNER JOIN (
SELECT student_id, min(grade) min_grade
FROM enrollment
GROUP BY student_id
) e ON e.student_id = s.student_id;
您的查询的其他修复程序:
- 您需要在子查询中使用别名
,以便在外部查询中引用它min(grade)
- 子查询本身需要一个别名
内部联接
转换为左联接
:
SELECT
s.std_name,
(
SELECT min(e.grade)
FROM enrollment e
WHERE e.student_id = s.student_id
) min_grade
FROM student s
子查询中没有
学生id
。错误似乎很清楚。而且没有别名注册
…非常感谢!第一个做到了。我还应该从注册表中获取另一列。我该怎么做呢?主要目标是只返回每个学生注册的所有班级中最低年级的std_名称和课程编号。