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

MySQL执行dense_rank开窗函数报expecting EOF ; instead of )错误求助

错误原因排查与解决方案

1. 首要原因:MySQL版本不支持窗口函数

窗口函数(包括dense_rank()、OVER子句等)是MySQL 8.0版本才新增的功能,如果你使用的是MySQL 5.7及更早版本,数据库原生不支持该语法,就会抛出语法解析错误,和你收到的报错提示完全吻合。
你可以执行以下命令查询当前数据库版本确认:

SELECT VERSION();

如果返回的版本号小于8.0,即可确认是版本兼容问题,和用户权限无关。

2. 次要语法修正点

你删除多余逗号后的语法本身还有一个可优化点:rank是MySQL的保留关键字,作为别名时建议用反引号包裹,避免潜在的语法冲突,修正后的完整代码如下:

SELECT
    date_created,
    serial_number,
    dense_rank() OVER (PARTITION BY serial_number ORDER BY date_created DESC) AS `rank`
FROM table_A;

3. 关于权限问题的说明

窗口函数的使用不需要单独授权,只要你的账号拥有table_A的SELECT权限就可以正常调用,你遇到的报错属于语法解析层面的错误,不是权限拦截导致的。

4. Workbench未高亮OVER关键字的原因

这是正常现象:如果你的Workbench版本较低,或者连接的数据库实例版本低于8.0,Workbench的语法高亮规则会自动适配低版本MySQL的语法范围,不会识别8.0新增的关键字。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:54:03