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

MariaDB基于进球数的球队排名SQL查询语法错误修复求助

解决MariaDB中RANK() OVER语法错误的问题

问题分析

你遇到的#1064语法错误,核心原因是你的MariaDB版本低于10.2——RANK() OVER这类窗口函数语法是从MariaDB 10.2版本才开始支持的,旧版本无法识别该语法。

错误提示:#1064 - 您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,了解在'OVER (ORDER BY Goals For DESC) GF'附近使用的正确语法。

解决方案

方案1:升级MariaDB版本

如果可以将MariaDB升级到10.2或更高版本,只需调整原查询中RANK与括号之间的空格(去掉多余空格),修正后的查询如下:

SELECT
  `League Id`, `Team Id`, `Goals For`,
  RANK() OVER (ORDER BY `Goals For` DESC) AS `GF`
FROM
  `team_records`
WHERE `League Id` = 0;

方案2:用子查询模拟排名(无需升级)

如果无法升级版本,可通过关联子查询模拟RANK()函数的排名逻辑(同分球队排名相同):

SELECT
  tr.`League Id`, tr.`Team Id`, tr.`Goals For`,
  (SELECT COUNT(DISTINCT `Goals For`) 
   FROM `team_records` tr2 
   WHERE tr2.`League Id` = 0 AND tr2.`Goals For` > tr.`Goals For`) + 1 AS `GF`
FROM
  `team_records` tr
WHERE tr.`League Id` = 0
ORDER BY tr.`Goals For` DESC;

该查询通过统计同联赛中进球数高于当前球队的不同进球值数量,再加1得到当前球队的排名,和RANK()函数的逻辑完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:19:53