[英]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 = 4
或6
他們的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;
如果您不想更改輸出中的記錄順序,請嘗試以下操作:
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.