sql - 执行 SQL 查询时出现“标识符标识符”错误
问题描述
我不确定如何修复涉及到 registration.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 Developer 中出现以下错误:
ORA-00904: "ENROLLMENT"."STUDENT_ID": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 22 Column: 4
解决方案
子查询不返回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
推荐阅读
- c++ - 更快的外部替代品
- ios - 如何在 iOS 上全屏显示 AppAuth 网页?
- vue.js - Vuetify 数据表上的自定义分页,每行选择项目
- javascript - 重新加载页面后如何保存数据
- php - 如何从php mysql数据库中获取数组格式的数据
- c# - C#HttpClient中如何计算发送请求的时间、等待响应的时间、接收响应的时间?
- python - 单击带有 selenium 和 python 的动态下拉元素
- flutter - 将默认图标主题设置为 cupertino flutter appbar
- github-actions - Github 操作在上一步提交后进行 lint
- python-3.x - 对于具有负整数的列表,默认情况下对集合进行反向排序