MYSQL按WITH / Count排序

时间:2013-01-29 18:14:24

标签: mysql count sql-order-by

我的桌子有用户名和用户点,我正在处理排行榜名单。我想根据积分获得前十名球员。我已将此查询表述为:

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语句,但我不希望按排名排序新的玩家列。

2 个答案:

答案 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)

SQL FIDDLE DEMO

答案 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;