計算排名
#相關詞
#ranking, #not, #with, #tie
問題概述
根據欄位中數值大小來計算排名(表1→表2)
表1:myTable

表2:結果

Query語法
SELECT
uid,
score,
@currentRank := @currentRank + 1 AS rank
FROM
myTable, (SELECT @currentRank := 0 ) r
ORDER BY
rank DESC
範例解析
這一篇的範例比較難一點,因為有牽涉到SQL中的變數指定
如果有學過php的話,@currentRank就等於$currentRank,是個使用者定義的變數
還記得x = x + 1中的=不等於數學中的等於嗎?(希望你聽得懂這個繞口令在說什麼)
程式語言中的=普遍是指向、或參考(reference)的意思,我個人是覺得比較適合用「→」來理解
用數學的方式來說,就是將等號右邊的值代入等號左邊
而由於在SQL中=被用來檢查條件,所以指定變數的符號就變成了:=囉