【发布时间】:2021-07-31 13:55:28
【问题描述】:
对于一个特定的查询,我写了 ORA-00904 错误发生
SELECT '103040698' as StudID, M.Title, R.SHORTDESC, C.COLOURNAME
FROM MOVIE0698 M
INNER JOIN RATING0698 R
ON M.SHORTDESC = R.SHORTDESC
INNER JOIN COLOURTYPE0698 C
ON M.COLOURNAME = C.COLOURNAME
ORDER BY Title ASC;
专门针对 ON **M.**SHORTDESC = R.SHORTDESC
但是,我之前刚刚编写的上一个查询也使用了 INNER JOIN
SELECT '103040698' as StudID, A.FullName, M.Title, M.RelYear
FROM CASTING0698 C
INNER JOIN ACTOR0698 A
ON C.ActorNo = A.ActorNo
INNER JOIN MOVIE0698 M
ON C.MovieNo = M.MovieNo
ORDER BY RelYear DESC;
这个查询运行完美,所以我只是不清楚我做错了什么。
据我所知,INNER JOIN 首先是用子表编写的,然后是父表,例如ON C.ActorNo = A.ActorNo 但我可能是错的,因为我知道有些软件会接受任何一种方式,而其他人对此很敏感。
对于上下文,我正在使用 SQLJunior 来完成我的学业
这是整个错误
开 M.shortdesc = R.shortdesc
*第 4 行出错:ORA-00904: "M"."SHORTDESC": 标识符无效
【问题讨论】:
-
连接中表的顺序无关紧要。您只是在链接两个表;两者都不是“父母”或“孩子”。我看不出这有什么问题。您是否检查过文件中的奇怪字符,例如制表符或其他控制字符?你能发布整个错误吗?
-
@TimRoberts 我刚刚添加了整个错误消息,但我想问题在于我编写的查询较少,而更多的是创建表/插入数据文件?
-
也许我有点厚,但您完美运行的查询不包含任何名为 SHORTDESC 的列。您确定列拼写正确并在正确的表格中引用吗?电影表 M 真的有 SHORTDESC 吗?
-
一些早期版本的 oracle 对 ON 的编写方式很敏感,但那应该是 30 年前的事情了
-
@CaiusJard 我很确定我有,在我的文本文件的创建表部分我有大写的表名称,但在“插入”部分中,名称都是小写或者名称的开头是大写的,例如短描述与全名
标签: sql oracle inner-join ora-00904