MySQL抛出错误1064,似乎无法识别OVER命令



我的查询是:

SELECT *,
ROW_NUMBER() OVER (ORDER BY score ASC)
FROM submissions

我收到的错误消息是:

#1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在第 2 行的"(ORDER BY score ASC( FROM SUBMITS LIMIT 0, 25"附近使用的正确语法

我正在phpMyAdmin中运行此查询。我注意到 OVER 不是蓝色的,也不是建议在我键入时,与其他命令词(ORDER、ASC 等(不同。

这个更简单的查询运行良好:

SELECT * FROM submissions

我尝试将内容放在引号中,改用 RANK 函数,并摆弄空格,但查询仍然没有运行。这是怎么回事?

我的猜测是你运行的是一个早于 8+ 的 MySQL 版本,一个不支持ROW_NUMBER的版本。 在早期版本的 MySQL 中,有几个选项可用于模拟ROW_NUMBER。 一是使用用户变量:

SELECT *,
(@row_number:=@row_number + 1) AS rn
FROM submissions, (SELECT @row_number := 0) tmp
ORDER BY score;

最新更新