mysql найти местоположение строки - PullRequest
0 голосов
/ 10 января 2011

У меня есть база данных, полная оценок пользователей за игру, которую я создал.Я пытаюсь добавить функцию, чтобы показать пользователю, каков их текущий рейтинг.

Мне нужен запрос, который отсортирует строки по счету DESC, а затем определит местоположение пользователя и получит его / ее рейтинг по имени пользователя.

Я знаю, что это довольно простой запрос, но мой разум просто сейчас не работает.

CREATE TABLE HighScores(
   id       int(11)      NOT NULL auto_increment
  ,deviceID varchar(100) NOT NULL
  ,username varchar(50)  NOT NULL
  ,score    varchar(10)  NOT NULL
  ,game     int(2)       NOT NULL
  ,spins    int(10)      NOT NULL
  ,PRIMARY KEY (id)
 );

Ответы [ 4 ]

1 голос
/ 10 января 2011

Так как я не знаю структуру вашей таблицы, сложно придумать запрос.

Эта статья делает именно то, что вы хотите.

Пример запроса:

select @rownum:=@rownum+1 ‘rank’, p.* from player p, (SELECT @rownum:=0) r order by score desc limit 10;

Магия заключается в переменной rownum, которая является переменной, увеличенной для каждой строки.

1 голос
/ 10 января 2011

Предполагая структуру таблицы, подобную этой:

create table users(
   user_id
  ,score    int
  ,primary key(user_id)
);

Вы можете рассчитать рейтинг пользователя, подсчитав количество пользователей с более низким баллом.

0 голосов
/ 10 января 2011
SET @rank=0;

SELECT username, rank
FROM (
  SELECT username, @rank:=@rank+1 AS rank
  FROM HighScores 
  ORDER BY score DESC
) AS t
WHERE username = :username
0 голосов
/ 10 января 2011
SET @rank:= 0;
SELECT rank, score FROM (
                    SELECT @rank:= @rank + 1 AS rank, id, score
                    FROM scores ORDER BY score DESC
                    ) as result WHERE id=xxx;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...