1

私はテーブルを持っています:

**user**
id, name, points

ユーザーの順位をポイントで取得するためのクエリの作成方法を教えてください。

例えば:

1, 'David', 5
2, 'Dmitry', 10
3, 'Monica', 15
4, 'Jeniffer', 7
5, 'Andy', 12

ユーザー「Monica」はポイントに基づいて 1 位、「Jeniffer」は 4 位などです。

アドバイスをありがとう!

編集

次のようなクエリが必要です。

SELECT rank FROM user ... WHERE id = 3;
rank |
1

SELECT rank FROM user ... WHERE id = 5;
rank |
2
4

6 に答える 6

1

以下をお試しください:

SELECT
   id,rank, name,point 
FROM (
    SELECT id,
        name,
        point,  
        @rank := @rank + 1 as rank        
    FROM (
      SELECT * from tblA ORDER by point desc) As a, 
    (SELECT @rank := 0) AS vars      

) T 
WHERE id=1

http://sqlfiddle.com/#!2/581fc/9

于 2012-06-27T06:04:39.170 に答える
1

これを試して:

select t.rank from (
      select @i := @i + 1 as rank, id, name, points
        from MyUser x,(SELECT @i:=0) foo 
    order by x.points desc) T
 where T.id = 3
于 2012-06-27T06:16:55.520 に答える
1
select * from user order by points desc
于 2012-06-27T04:38:43.577 に答える
0
set @rank := 0;
select *, (@rank := @rank + 1) as rank
from (select * from user order by points desc) x
where id = 3
于 2012-06-27T04:47:50.053 に答える
0

次のように使用します。

SELECT * FROM `user` ORDER BY `points` DESC;

1 位の保持者を単独で取得したい場合は、次のように使用できます。

SELECT * FROM `user` ORDER BY `points` DESC LIMIT 1;
于 2012-06-27T04:40:07.090 に答える
0
with cte as(
select *,RANK() over(order by points desc) as rnk from user_ 
)
select rnk [rank] from cte where id=3
于 2012-06-27T06:43:58.887 に答える