2017-01-23 100 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