首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL按W/Count排序

MYSQL按W/Count排序
EN

Stack Overflow用户
提问于 2013-01-30 02:14:24
回答 2查看 130关注 0票数 0

我的表有用户名和用户点数,我正在排行榜上工作。我想根据积分获得前十名球员。我将这个查询表述为:

代码语言:javascript
复制
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语句,但我不希望有一个新的按排名排序的球员列。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-30 02:40:33

试试这个:

代码语言:javascript
复制
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";

示例数据:

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2013-01-30 02:19:17

代码语言:javascript
复制
SELECT users.username, users.points FROM users WHERE users.points=MAX(users.points) OR users.username='<comparison username>' ORDER BY users.points DESC;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14589481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档