我有一個名爲「MyTable」的MySQL表,它基本上列出了用戶名和點(兩列,名稱和點)。我想說的是「什麼是joe1928的排名?」,這當然是基於他的觀點。我怎麼能在MySQL中做到這一點,而無需下載所有數據並對其進行排序並自己確定排名?MySQL表中的排名
的人以最高分人數將從該網頁的排名1.
我有一個名爲「MyTable」的MySQL表,它基本上列出了用戶名和點(兩列,名稱和點)。我想說的是「什麼是joe1928的排名?」,這當然是基於他的觀點。我怎麼能在MySQL中做到這一點,而無需下載所有數據並對其進行排序並自己確定排名?MySQL表中的排名
的人以最高分人數將從該網頁的排名1.
嘗試讓多少人有更高的分數比你用戶:
select count(*) from MyTable where score > (select score from MyTable where user = 'Joe');
這將返回0爲頂級用戶。
This page seems to describe and solve your problem.
注:
SET @rownum := 0;
SELECT rank, correct FROM (
SELECT @rownum := @rownum + 1 AS rank, correct, uid
FROM quiz_user ORDER BY correct DESC
) as result WHERE uid=xxxxxxxx
SELECT @r AS Rank
FROM MyTable u, (SELECT @r := 0)
WHERE (@r := @r + 1) * (u.Username = 'joe1928')
ORDER BY u.Score DESC
LIMIT 1
select * from [TABLENAME] where [USERNAME] = blah order by [POINTS] desc limit 1;
根據張貼@戴夫查詢的鏈接將類似於下面的內容:
select Rank,name from
(select @rownum:[email protected]+1 AS 'Rank', p.name
from calls p, (select @rownum:=0) r
order by p.points desc) as rankResults
where name = 'joe';
這是從另一個堆棧溢出頁面,似乎解決您的問題。
SELECT uo.*,
(
SELECT COUNT(*)
FROM users ui
WHERE (ui.points, ui.id) >= (uo.points, uo.id)
) AS rank
FROM users uo
WHERE id = @id
什麼是計算等級的標準/公式? –
它是基於點。最高分的人排名1 – StanLe