PHP+mysql 實現排名並查詢指定用戶排名
情形如下:
對用戶表裏的所有用戶 的積分大小 【point 】實現排名 並 得到某一個用戶的積分的具體排名
1、首先,對所有用戶進行排名
$sql = "SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r,(SELECT uid,point FROM user ORDER BY `point` DESC) AS t ";
$sql = "SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r,(SELECT uid,point FROM user ORDER BY `point` DESC) AS t ";
註釋:1、 SELECT @rownum := 0:表示對rownum賦初始值0
2、@rownum := @rownum + 1:表示對rownum加1,語句中會從1開始,每一行往下都自動加1
上述代碼會根據user表中的point從大到小進行排序。
2、得到某個特定用戶的排名
原理:把上步得到的數據看做一張表,根據uid 來查詢特定用戶的排名
$sql = "SELECT b.uid,b.rownum FROM(SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r,(SELECT uid,point FROM user ORDER BY `point` DESC) AS t) AS b WHERE b.uid = {$uid} ";
查詢結果:{"uid":"300462","rownum":"10"}
其中 rownum 即對應該用戶的排名