簡體   English   中英

MySQL選擇用戶的位置

[英]MySQL select user's place

我有一個表用戶:

id  |   rating
1       4
2       -1
3       12
4       0
5       2
6       0

我如何通過評級id = N來選擇用戶的位置排序,並且具有相似評級的用戶在頂部具有相同的位置?

UPD:我想輸出:

如果userid = 1 ,則他的rank is 2 ,如果userid = 2 ,則他的rank is 5 ,如果userid = 3 ,則rank is 1 ,......但是如果userid = 46他們的rank are 4因為速率相似。

我想你想找到asll user_id的評級:

SELECT id,
       IF(rating <> @var_rating_prev, (@var_rank:= @var_rank + 1), @var_rank) AS rank,
       (@var_rating_prev := rating) AS rating
FROM table_name a,(SELECT @var_rank := 0, @var_rating_prev := 0) r
ORDER BY rating DESC;

示例@ sqlfiddle

如果您不想更改輸出中的記錄順序,請嘗試以下操作:

SELECT a.*, b.rank
FROM test_table a
     INNER JOIN (
            SELECT id,
                   IF(rating <> @var_rating_prev, (@var_rank:= @var_rank + 1), @var_rank) AS rank,
                   (@var_rating_prev := rating) AS rating
            FROM test_table a,(SELECT @var_rank := 0, @var_rating_prev := 0) r
            ORDER BY rating DESC
        ) b
         ON a.id = b.id
ORDER BY a.id;
SELECT COUNT(*)+1 `rank`
FROM table_name
WHERE rating > (SELECT rating
                FROM table_name
                WHERE id = N)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM