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

MariaDB 11.1.2自定义行号列报错问题及解决咨询

解决MariaDB 11.x中生成行号的语法错误问题

问题原因

在MariaDB 11.1.2中报错的核心原因是row_number已成为保留关键字(对应窗口函数ROW_NUMBER()),直接将其作为列别名使用会触发语法解析错误。而在MariaDB 10.5.8、MySQL 5.7等旧版本中,row_number尚未被列为严格保留关键字,因此可以正常运行。

可行解决方案

方案1:给row_number别名添加反引号转义

无论使用用户变量还是窗口函数,只需将别名用反引号包裹即可:

  • 使用用户变量的写法:
SET @curRow=0;
SELECT @curRow := @curRow + 1 AS `row_number`, `users`.`name` FROM `users`;
  • 使用窗口函数的写法:
SELECT ROW_NUMBER() OVER (ORDER BY users.id) AS `row_number`, `users`.`name` FROM `users`;

方案2:更换非保留关键字的别名

放弃使用row_number作为别名,改用row_num、rn等非保留关键字:

  • 用户变量写法:
SET @curRow=0;
SELECT @curRow := @curRow + 1 AS row_num, `users`.`name` FROM `users`;
  • 窗口函数写法:
SELECT ROW_NUMBER() OVER (ORDER BY users.id) AS row_num, `users`.`name` FROM `users`;

修正ChatGPT给出的子查询方案

原方案失败同样是因为未转义row_number别名,修改后即可正常运行:

SELECT `row_number`, name FROM (
    SELECT @curRow := @curRow + 1 AS `row_number`, name
    FROM users, (SELECT @curRow := 0) r
) AS subquery_alias;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:52:15