MySQL 8.0版本创建CTE公共表达式时报1064语法错误如何解决?
MySQL 8.0 CTE语法报错1064问题分析
报错核心原因
MySQL 8.0版本原生支持CTE语法,不存在版本兼容问题,本次报错是因为仅完成了CTE的定义,没有在CTE声明结束后紧跟对应的调用查询语句,不符合MySQL语法规范。
具体规则说明
- CTE是单次查询有效的临时结果集,
WITH关键字仅用于声明CTE结构,不能作为单独的SQL语句执行,必须在CTE定义完成后立刻编写调用该CTE的业务查询语句。 - 你当前提交执行的代码只有CTE定义片段,SQL解析器执行到CTE结束的括号位置后,无法识别后续的合法SQL内容,因此抛出1064语法错误。
正确代码示例
如果需要查询该CTE的全部结果,写法如下:
WITH sub_query AS (SELECT imdp_title_id FROM movie_ratings) SELECT * FROM sub_query;
也可根据业务需求在后续查询中增加过滤、聚合等逻辑,例如:
WITH sub_query AS (SELECT imdp_title_id FROM movie_ratings) SELECT COUNT(*) AS total FROM sub_query;
内容的提问来源于stack exchange,提问作者AmirWG
相关产品推荐
相关产品推荐

