【发布时间】:2021-04-30 08:32:46
【问题描述】:
我被要求为我的 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行中的问题。我不确定我哪里出错了,因为我一直在通过建议的其他问题使用相同的格式由我的导师指导,这些查询运行良好。
【问题讨论】:
-
M.RunTime = < 90应该是M.RunTime <= 90;OR M.RatingCode = 'MA'应该是OR (M.RatingCode = 'MA' -
@DmitryBychenko 虽然很好地格式化 SQL 通常很有帮助;在这种情况下,OP 在错误消息中包含了与代码中的一行相对应的行号,并且通过更改格式,您会使行号和实际代码之间的链接无效。我已回滚您的编辑以保持行号有效。
标签: sql oracle syntax-error ora-00936