我的查询是:
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;