执行 SQL 查询时出现 "Identifier identifier" 错误
I am getting a "Identifier identifier" error when executing a SQL query
我不确定如何修复引用 enrollment.student_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 开发人员中出现以下错误:
ORA-00904: "ENROLLMENT"."STUDENT_ID": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 22 Column: 4
子查询没有 return student_id
,所以你不能在外部查询中引用它。看起来你想要每个学生的最低成绩,所以你还需要修复子查询的 group by
子句。
我建议:
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)
以便您可以在外部查询中引用它
子查询本身需要别名
请注意,您可以使用相关子查询获得相同的结果 - 这允许根本没有注册的学生,而您的原始查询则没有,除非您将 INNER JOIN
转换为 LEFT JOIN
:
SELECT
s.std_name,
(
SELECT min(e.grade)
FROM enrollment e
WHERE e.student_id = s.student_id
) min_grade
FROM student s
我不确定如何修复引用 enrollment.student_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 开发人员中出现以下错误:
ORA-00904: "ENROLLMENT"."STUDENT_ID": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 22 Column: 4
子查询没有 return student_id
,所以你不能在外部查询中引用它。看起来你想要每个学生的最低成绩,所以你还需要修复子查询的 group by
子句。
我建议:
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)
以便您可以在外部查询中引用它子查询本身需要别名
请注意,您可以使用相关子查询获得相同的结果 - 这允许根本没有注册的学生,而您的原始查询则没有,除非您将 INNER JOIN
转换为 LEFT JOIN
:
SELECT
s.std_name,
(
SELECT min(e.grade)
FROM enrollment e
WHERE e.student_id = s.student_id
) min_grade
FROM student s