我尝试在MariaDB上使用Rank函数。我已经在我的表上创建了某种RANK()实现,但它不能正常工作。
我尝试的两个查询如下:
SELECT SpelarID, RondNr, Rondresultat, RANK() OVER(PARTITION BY TavlingRondNr ORDER BY Rondresultat DESC)
FROM Resultatlista
WHERE RondNr = 1
ORDER BY Rondresultat DESC
LIMIT 10;
还有
SELECT *, RANK() OVER (ORDER BY Rondresultat DESC)
FROM Resultatlista
WHERE TavlingRondNr = 1
ORDER BY Rondresultat DESC
LIMIT 10;
当我用phpMyAdmin运行它时,得到的结果是:
MySQL说:
文件
1064 -您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解要使用的正确语法
第1行的结果列表WHE'中的near '(按TavlingRondNr排序的分区,按RondresulatatDESC排序)
对于第二个,我得到一个类似的错误消息:
1064 -您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解要使用的正确语法
第1行的near '(ORDER BY Rondresultat DESC)FROM结果列表,其中TavlingRondNr = 1订单'
修复SQL的任何建议。我需要在以后的更新中使用它。
2条答案
按热度按时间x8diyxa71#
窗口函数首次引入于MariaDB 10.2.0。
它们在5.5、10.0、10.1中不存在(也不会添加到)。
截至目前,2017年1月底,最新的MariaDB 10. 2. 3是Beta版,不建议量产,但预计很快就会有发布候选,GA应该也不远了,值得一试。
rlcwz9us2#
等级()
SELECT pid,name,age,@当前排名:= @当前排名+ 1 AS排名FROM玩家p,(SELECT @当前排名:= 0)q ORDER BY年龄描述,name
密度等级()
SELECT pid,name,age,CASE当@prevRank =年龄时则@curRank当@prevRank:=年龄时则@curRank:= @curRank + 1 END AS排名FROM玩家p,(SELECT @curRank:=0,@prevRank:= NULL)r按年龄排序
工作正常