2015-06-17 94 views
0

之间行列的名单我有一个表,看起来像这样:获得一定范围内

+-------------------+---------------------+ 
| Username(varchar) | Points(integer) | 
+-------------------+---------------------+ 
| User #0   |    1000 | 
| User #1   |     900 | 
| User #2   |     900 | 
| User #3   |     810 | 
| User #4   |     800 | 
| User #5   |     790 | 
| User #6   |     750 | 
| User #7   |     749 | 
| User #8   |     730 | 
| User #9   |     650 | 
| User #10   |     600 | 
| User #11   |     550 | 
| User #12   |     450 | 
+-------------------+---------------------+ 

我需要一个查询在那里我可以把2号在例如我只希望看到的地方2 - 6。我希望你能告诉我我是如何做到的。人们可以拥有相同数量的积分。地方用户#1和用户#2得到了相同的量,所以我需要6行没有5,如果它会很容易我会通过点使用秩序和限制

输出应该是这样的:

+-------------------+---------------------+-------------------+ 
| Username(varchar) | Points(integer)  | Rank    | 
+-------------------+---------------------+-------------------+ 
| User #1   |     900 |     2 | 
| User #2   |     900 |     2 | 
| User #3   |     810 |     3 | 
| User #4   |     800 |     4 | 
| User #5   |     790 |     5 | 
| User #6   |     750 |     6 | 
+-------------------+---------------------+-------------------+ 
+1

这实在太简单了。怎么去谷歌,输入* MySQL选择范围*和阅读官方文档?你有没有尝试过*自己的研究? –

+0

期望的输出是什么? – Rahul

+0

我可以谷歌和使用搜索功能。我可以使用限制等,但我想要一个像联盟一样的排名,但就像用户#1和用户#2获得了相同数量的例子,我想把它们放在一排。我想要5行独特的点,否则我会做LIMIT x,y和订单 – TobiasHH

回答

1

下面是一个使用MySQL用户定义变量计算“排名”的例子,为点分配了“排名”相同的“排名”值。

SELECT r.username 
     , r.points 
     , r.rank 
    FROM (SELECT t.username 
       , @rank := IF([email protected]_points,@rank,@rank+1) AS rank 
       , @prev_points := t.points AS points 
      FROM mytable t 
      CROSS 
      JOIN (SELECT @rank := 0, @prev_points := NULL) i 
      ORDER BY t.points DESC, t.username DESC 
     ) r 
    WHERE r.rank BETWEEN 2 AND 6 
    ORDER BY r.points DESC, r.username DESC 

原来的答复原始

您可以组合使用LIMIT条款与ORDER BY

例如:

SELECT t.username, t.points 
    FROM mytable t 
    ORDER BY t.points DESC, t.username DESC 
    LIMIT 4,6 

在这个例子中,LIMIT子句说:“跳过前四行并返回一个六行”。所以,这将返回从第五行开始的行,直到第十行。

+0

问题是有时人们可以有相同数量的点,我希望他们在一行。因此,当我想要5个地方和2个人获得相同数量的地方时,我需要6个表格中的行 – TobiasHH

+0

@TobiasHH:此评论看起来更像是关于您的问题的信息,而不是与我的答案相关的评论。请考虑使用“编辑”功能将此信息添加到您的问题。其他人可能不会阅读我的答案中的评论,这看起来是规范的重要组成部分。 – spencer7593