用mysql實現rank()排序

2021-09-01 13:23:52 字數 836 閱讀 8377

mysql中不存在類似於sql server或orcal中的rank()函式來得到排名。而在實際的工作中,常常需要將查詢後排序得到的排名給記錄下來。由於專案需要,不僅要對成績進行排名,而且需要相同成績的具有相同的排名。根據網上的提供的排名方法,進一步進行擴充,得到了下面的實現方式。

表:score,有三個字段,id,name,score

表中原始資料:

-- 順序一直在變大

@j:=@j+1 as j,

-- 只有在前後二次排序值不同時才會使用順序號

@k:=(case when @pre_score=tmp.score then @k else @j end) as rank,

@pre_score:=tmp.score as pre_score

from

(-- 成績排序

select * from score order by score desc

) tmp,

-- @k 表示最終的排名(相同值時序號相同)

-- @j 表示順序排名

-- @pre_score上一次排序值

MySQL中實現rank排名查詢

在mysql中,不存在類似於sql server或orcal等中的rank 函式來得到排名 所以我們需要手動地寫這個rank功能。sql語句中,使用 來定義乙個變數。如 abcsql語句中,使用 來給變數賦值,abc 123,則變數abc的值為123sql語句中,if a,b,c 表示,如果a條件成...

MySQL實現Rank高階排名函式

mysql中沒有rank排名函式,當我們需要查詢排名時,只能使用mysql資料庫中的基本查詢語句來查詢普通排名。儘管如此,可不要小瞧基礎而簡單的查詢語句,我們可以利用其來達到rank函式一樣的高階排名效果。在這裡我用乙個簡單例子來實現排名的查詢 首先我們先建立乙個我們需要進行高階排名查詢的playe...

MySQL中實現Rank排名高階函式

先舉例乙個 select name,time,currank currank 1 as rank from 表名,select currank 0 qorder by time1.要在mysql中宣告乙個變數,你必須在變數名之前使用 符號。from子句中的 currank 0 部分允許我們進行變數初...