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

时间:2019-08-29 06:05:10

标签: mysql phpmyadmin

我的查询是:

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

我收到的错误消息是:

  

#1064-您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第2行的'(ORDER BY score ASC)FROM Submits LIMIT 0,25'附近使用

我正在phpMyAdmin中运行此查询。我注意到,与其他命令字(ORDER,ASC等)不同,OVER并不是蓝色,也不建议输入。

这个简单的查询运行得很好:

SELECT * FROM submissions

我尝试使用RANK函数将其放在引号中,并摆弄空白,但查询仍然无法运行。怎么了?

1 个答案:

答案 0 :(得分:1)

我的猜测是您正在运行的MySQL版本早于8+,而该版本不支持ROW_NUMBER。在早期版本的MySQL中,有一些模拟ROW_NUMBER的选项。一种是使用用户变量:

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