我的表有用户名和用户点数,我正在排行榜上工作。我想根据积分获得前十名球员。我将这个查询表述为:
SELECT
users.username,
users.points
FROM users
ORDER BY users.points DESC
LIMIT 10但是,我也想根据1号球员的位置获得球员的位置,而不是为它创建一个新的列。是否有一个MYSQL查询来按点获取ORDER BY DESC,以及从该ORDER中获取COUNT来查找列表中的用户?(WHERE username=)。
编辑澄清:我想从上面的声明从desc的用户计数。即1- user1 - 1000点,2- user2 - 750点。等等..。N- currentPlayer - currentPoints。我不介意使用JOIN语句,但我不希望有一个新的按排名排序的球员列。
发布于 2013-01-30 02:40:33
试试这个:
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)发布于 2013-01-30 02:19:17
SELECT users.username, users.points FROM users WHERE users.points=MAX(users.points) OR users.username='<comparison username>' ORDER BY users.points DESC;https://stackoverflow.com/questions/14589481
复制相似问题