我的桌子有用户名和用户点,我正在处理排行榜名单。我想根据积分获得前十名球员。我已将此查询表述为:
SELECT
users.username,
users.points
FROM users
ORDER BY users.points DESC
LIMIT 10
但是,我还希望根据1号球员获得球员的位置,而无需为其创建新专栏。是否有MYSQL查询来获取ORDER BY DESC
点数以及COUNT
来自ORDER
以查找列表中的用户? (WHERE username=
)。
编辑以澄清:我希望通过上述语句从desc中计算用户数。 I.E. 1 - user1 - 1000点,2 - user2 - 750点......等等... N - currentPlayer - currentPoints。我不介意使用JOIN
语句,但我不希望按排名排序新的玩家列。
答案 0 :(得分: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)
答案 1 :(得分:-1)
SELECT users.username, users.points FROM users WHERE users.points=MAX(users.points) OR users.username='<comparison username>' ORDER BY users.points DESC;