2017-01-23 107 views
0

我想在MariaDB上使用Rank函数。我已经在我的表上创建了一些RANK()实现,但它不能正常工作。如何在MariaDb中使用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号线

而对于第二个使用

附近 '(PARTITION BY TavlingRondNr ORDER BY Rondresultat DESC)FROM Resultatlista WHE'我收到类似的错误消息:

1064 - 您的SQL语法错误;检查 'FROM Resultatlista(ORDER BY Rondresultat DESC)WHERE TavlingRondNr = 1个ORDER' 对应于您的MariaDB的服务器版本正确的语法使用

附近手册第1行

任何建议,以解决SQL。我需要在稍后的更新中使用它。

+1

您使用的是哪个版本的MariaDB? 'RANK()'是在10.2中添加的。 – Barmar

+0

在Synology NAS上运行MariaDB。上周升级到他们最新的支持版本(版本:5.5.53-0070)。 – Guran

回答

1

窗口函数首次引入MariaDB 10.2 .0。

它们不存在(并且不会被添加到)5.5,10.0,10.1。


截至目前,2017年一月底,最新MariaDB的10.2.3是一个Beta版本,不建议用于生产,而是一个候选版本预计很快,而GA不应该远,所以值得一试。

+0

感谢您的回答,我现在要求Synology将他们的MariaDB软件包升级到至少版本10.2.0。 – Guran

+0

请勿使用10.2.0,请使用升级时可用的最新10.2.x。目前是10.2.3; 10.2.4即将推出,其后的下一个很可能是GA。 – elenst