提问人:Vas Theo 提问时间:4/30/2021 最后编辑:MT0Vas Theo 更新时间:4/30/2021 访问量:109
ORA-00936:缺少“=”的表达式
ORA-00936: missing expression for a '='
问:
我被要求为我的 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 行的问题。我不确定我哪里出了问题,因为我一直通过我的导师的建议对其余问题使用相同的格式,并且这些查询运行良好。
答:
1赞
Mureinik
4/30/2021
#1
“小于或等于”运算符是 ,而不是 。即,在 的条件下,您应该有而不是 。<=
>=
M.RunTime
M.RunTime <= 90
M.RunTime =< 90
评论
0赞
Vas Theo
4/30/2021
对不起,谢谢你,我现在应该校对我的查询,我的错误在“第 10 行:ORA-00933:SQL 命令未正确结束”,但我在之后收到了订单
0赞
Mureinik
4/30/2021
@VasTheo似乎您在子句的最后一个之后缺少一个(
OR
where
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
评论
M.RunTime = < 90
应该是 ; 应该是M.RunTime <= 90
OR M.RatingCode = 'MA'
OR (M.RatingCode = 'MA'