mysql - 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 函数,并摆弄空格,但查询仍然没有运行。这里有什么问题?
解决方案
我的猜测是您运行的 MySQL 版本早于 8+,不支持ROW_NUMBER
. ROW_NUMBER
在早期版本的 MySQL中有一些模拟选项。一种是使用用户变量:
SELECT *,
(@row_number:=@row_number + 1) AS rn
FROM submissions, (SELECT @row_number := 0) tmp
ORDER BY score;
推荐阅读
- haskell - 从 do 块中的多个字符串返回单个字符串
- gps - requestLocation() 无法提供有关手表硬件的课程,但可以在 Sim 中工作
- java - ArrayList .add 方法在线程中不起作用
- big-o - 破解编码面试的摊销时间
- python - 一些迭代后,从 kickstarter 抓取数据的 Python 代码不起作用
- c++ - 如何使用 SDL2 在 C++ 中将框呈现到屏幕上?
- javascript - 如何收听 Telegram Bot 错误?(谷歌应用脚本 + 网络钩子)
- php - mail() 错误地向 cPanel 默认帐户发送电子邮件
- javascript - 无法在导航栏中水平对齐菜单项
- docker - 在 Ubuntu 虚拟机中访问 Docker 容器端口