You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8.0.1使用RANK、OVER等窗口函数报1064语法错误如何解决

报错排查与解决方案

根因说明

你使用的MySQL 8.0.1属于开发里程碑版本(DMR,非正式GA版本),独立WINDOW子句的语法支持是从MySQL 8.0.2版本才正式上线的,8.0.1仅支持将窗口规则直接写在OVER关键字后的内联写法,不支持在SELECT语句末尾单独定义窗口别名,因此触发语法报错。

两种解决方式

  • 方案一:修改SQL语句,将窗口定义内联到OVER后,无需单独声明WINDOW子句,可直接在8.0.1版本运行,修改后的语句如下:
WITH daily_shipping_summary AS 
( 
    SELECT ship_date, SUM(shipping_cost) AS daily_total FROM market_fact_full AS m
    INNER JOIN shipping_dimen AS s
    ON s.ship_id = m.ship_id
    GROUP BY ship_date
)
SELECT *,
SUM(daily_total) OVER (ORDER BY daily_total ROWS UNBOUNDED PRECEDING) AS running_total,
AVG(daily_total) OVER (ORDER BY daily_total ROWS 6 PRECEDING) AS moving_avg
FROM daily_shipping_summary
  • 方案二:将MySQL服务升级到8.0.2及以上的正式GA版本,无需修改原有SQL语句即可直接运行。

版本验证方式

可执行命令SELECT VERSION();查看当前MySQL的实际版本号,确认是否支持独立WINDOW子句语法。

内容的提问来源于stack exchange,提问作者blackhole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:15:08