0

我的表有用户名和用户积分,我正在制作排行榜列表。我想根据积分获得前十名的球员。我已将此查询表述为:

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

但是,我还想根据 1 号玩家的位置来获取玩家的位置,而不为它创建新列。是否有一个 MYSQL 查询来获取ORDER BY DESC按点以及COUNT从中ORDER找到列表中的用户?( WHERE username=)。

编辑澄清:我想通过上述语句从 desc 中计算用户数。IE 1 - 用户 1 - 1000 分,2 - 用户 2 - 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 小提琴演示

于 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 回答