MySQL 8.0环境使用WINDOW子句定义窗口函数报语法错误如何解决
MySQL 8 窗口函数1064语法错误问题解答
问题成因
你使用的MySQL 8.0.27版本本身完全支持窗口函数和WINDOW命名窗口语法,报错的核心原因是WINDOW子句语法不完整:按照MySQL语法规范,定义命名窗口时必须同步声明窗口的具体规则(分区、排序、框架等),格式要求为 WINDOW 窗口名 AS (窗口规则),你仅写了WINDOW w没有补充后续的窗口定义,因此触发语法错误。
调整方案
你可以根据自身业务需求选择以下任意一种写法调整:
- 方案1:补全命名窗口的规则定义
示例(可替换括号内的分区、排序规则为你实际需要的逻辑):SELECT row_number() OVER w AS `row_number`, prod_id FROM db.table WINDOW w AS (ORDER BY prod_id); - 方案2:不使用命名窗口,直接在OVER关键字后声明窗口规则
示例:SELECT row_number() OVER (ORDER BY prod_id) AS `row_number`, prod_id FROM db.table;
补充说明:字段别名建议使用反引号
`包裹,避免和SQL关键字冲突产生不必要的错误。
内容的提问来源于stack exchange,提问作者Joel Cahalan
相关产品推荐
相关产品推荐

