0

私のテーブルにはユーザー名とユーザーポイントがあり、リーダーボードリストに取り組んでいます。ポイントで上位10名を獲得したい。私はこのクエリを次のように定式化しました:

SELECT
    users.username,
    users.points
FROM users
ORDER BY users.points DESC
LIMIT 10

ただし、新しい列を作成せずに、ナンバーワンのプレーヤーに応じてプレーヤーがどこに立っているかも取得したいと思います。リスト内のユーザーを見つけるためだけでORDER BY DESCなく、ポイントごとに取得するMYSQLクエリはありますか?()。COUNTORDERWHERE username=

明確にするために編集:上記のステートメントによるdescからのユーザーの数を教えてください。IE 1-user1-1000ポイント、2-user2-750ポイントなど...N-currentPlayer-currentPoints。ステートメントを使用してもかまいませんJOINが、ランキングで並べ替えられたプレーヤーの新しい列を作成したくありません。

4

2 に答える 2

2

これを試して:

SELECT * FROM (
    select @rownum:=@rownum+1 `rank`, u.username, u.points 
    from users u, (SELECT @rownum:=0) r
    order by points desc) AS X
WHERE username ="Bob";

サンプルデータ:

CREATE TABLE users(
  id int auto_increment primary key,
  username varchar (30),
  points INT
  );

INSERT INTO users(username,points)
VALUES ('Bob', 1000), ('Jack',750), ('Joe', 500)

SQL FIDDLE DEMO

于 2013-01-29T18:40:33.343 に答える
-1
SELECT users.username, users.points FROM users WHERE users.points=MAX(users.points) OR users.username='<comparison username>' ORDER BY users.points DESC;
于 2013-01-29T18:19:16.587 に答える