私は "MyTable"と呼ばれるMySQLテーブルを持っており、基本的にユーザー名とポイント(2つのカラム、名前とポイント)をリストしています。私は "joe1928のランクは何ですか?"というようなことを言いたいと思っています。もちろん、彼のポイントに基づいています。どのように私はMySQLでこれを行うことができますすべてのデータをダウンロードし、それを並べ替えると自分自身のランクを決定する必要はありません?MySQLテーブル内のランク
ポイントの数が最も多い人は、そのページから1
私は "MyTable"と呼ばれるMySQLテーブルを持っており、基本的にユーザー名とポイント(2つのカラム、名前とポイント)をリストしています。私は "joe1928のランクは何ですか?"というようなことを言いたいと思っています。もちろん、彼のポイントに基づいています。どのように私はMySQLでこれを行うことができますすべてのデータをダウンロードし、それを並べ替えると自分自身のランクを決定する必要はありません?MySQLテーブル内のランク
ポイントの数が最も多い人は、そのページから1
はあなたよりも高いスコアを持つ人々の数を取得して試してみてくださいユーザー:
select count(*) from MyTable where score > (select score from MyTable where user = 'Joe');
トップユーザー。
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;
あなたのクエリは以下のもののようになります。@Daveにより投稿されたリンクに基づいて:
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