MySQL中使用row_number()的CTE出现语法错误,寻求排查方案
问题分析与解决
你的CTE语句仅定义了临时表team,但缺少使用该临时表的后续查询逻辑,这是触发1064语法错误的核心原因。此外需确认你的MySQL版本是否支持CTE特性(仅MySQL 8.0及以上版本支持WITH语句)。
修正后的示例代码
WITH team AS ( SELECT row_number() OVER() AS id, team_code, team_name FROM teams ) -- 必须添加对CTE的查询语句,例如: SELECT * FROM team;
额外排查点
- 验证MySQL版本:执行
SELECT VERSION();,若版本低于8.0,需升级版本,或改用子查询替代CTE实现需求。 - 检查语句衔接:确保CTE定义后没有多余的分号或其他语法错误。
内容的提问来源于stack exchange,提问作者Kartike Raj
相关产品推荐
相关产品推荐

