执行 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