ORA-00936:缺少“=”的表达式

ORA-00936: missing expression for a '='

提问人:Vas Theo 提问时间:4/30/2021 最后编辑:MT0Vas Theo 更新时间:4/30/2021 访问量:109

问:

我被要求为我的 D.A.D 课程做的一个特别问题如下:

• 编写执行以下操作的 SQL 语句: • 显示 StuId、电影编号、标题、运行时间、评级代码、评级简短描述、tmdb 分数 符合以下任一条件的电影: 额定代码 M 加上 160-165(含)之间的运行时间 评级代码为 G 加上运行时小于 90 PG 的评级代码加上运行时 120 或 121 MA 的评级代码加上运行时间 185 分钟或更长时间 • 查询还必须仅包含tmdb_score大于 6.1 的电影。 • 该列表必须处于升序电影无序列中。

所以作为回应,我写了这个:

SELECT '103040698' as StudID, M.MovieNo, M.Title, M.RunTime, M.RatingCode, M.TMDB_Score, R.SHORTDESC, C.COLOURNAME
FROM Movie0698 M
INNER JOIN RATING0698 R
ON M.RatingCode = R.RatingCode
INNER JOIN COLOURTYPE0698 C
ON M.COLOURCODE = C.COLOURCODE
WHERE (M.RatingCode = 'M' AND M.RunTime BETWEEN 160 AND 165 AND M.TMDB_Score > 6.1) 
OR (M.RatingCode = 'G' AND M.RunTime = < 90 AND M.TMDB_Score > 6.1) 
OR (M.RatingCode = 'PG' AND M.RunTime BETWEEN 120 AND 121 AND M.TMDB_Score > 6.1)
OR M.RatingCode = 'MA' AND M.RunTime BETWEEN >=185 AND M.TMDB_Score > 6.1)
ORDER BY M.MovieNo ASC;

但是,错误消息

'OR (M.RatingCode = 'G' AND M.RunTime = < 90 AND M.TMDB_Score > 6.1) 
                 
Error at line 8:
ORA-00936: missing expression' 

不断出现。在线程序 (SQLjunior) 指出“=”是第 8 行的问题。我不确定我哪里出了问题,因为我一直通过我的导师的建议对其余问题使用相同的格式,并且这些查询运行良好。

SQL Oracle 语法错误 ORA-00936

评论

0赞 Dmitry Bychenko 4/30/2021
M.RunTime = < 90应该是 ; 应该是M.RunTime <= 90OR M.RatingCode = 'MA'OR (M.RatingCode = 'MA'
0赞 MT0 4/30/2021
@DmitryBychenko 虽然很好地格式化 SQL 通常很有帮助;在这种情况下,OP 包含了错误消息,其中包含与代码中的行相对应的行号,并且通过更改格式,您将使行号和实际代码之间的链接无效。我已回滚您的编辑以保持行号有效。

答:

1赞 Mureinik 4/30/2021 #1

“小于或等于”运算符是 ,而不是 。即,在 的条件下,您应该有而不是 。<=>=M.RunTimeM.RunTime <= 90M.RunTime =< 90

评论

0赞 Vas Theo 4/30/2021
对不起,谢谢你,我现在应该校对我的查询,我的错误在“第 10 行:ORA-00933:SQL 命令未正确结束”,但我在之后收到了订单
0赞 Mureinik 4/30/2021
@VasTheo似乎您在子句的最后一个之后缺少一个(ORwhere
1赞 MT0 4/30/2021 #2

你有三个错别字:

OR (M.RatingCode = 'G' AND M.RunTime = < 90 AND M.TMDB_Score > 6.1)

应该是 .= <<=

以及:

OR M.RatingCode = 'MA' AND M.RunTime BETWEEN >=185 AND M.TMDB_Score > 6.1)

您需要删除 .BETWEEN

和:

OR M.RatingCode = 'MA' AND M.RunTime BETWEEN >=185 AND M.TMDB_Score > 6.1)

缺少 之后的开口。(OR