我想你要查找的評級asll user_id's`:
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;
你能在這裏顯示什麼是你的預期輸出? – AnandPhadke