2015-06-17 93 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