我正在嘗試獲取 MySQL SELECT 語句的排名值(MySQL 不是我太熟悉的東西)。此查詢以正確的順序(通過更多的統計數據)為我提供了我正在尋找的正確結果,但我需要從結果中獲取特定值。SELECT id, stats,@curRank := @curRank + 1 AS rankFROM statistics.web_stats p, (SELECT @curRank := 0) r ORDER BY stats DESC;給了我這個預期的結果:id,stats,rank999,291,11137,82,21084,79,31111,60,41097,55,51094,51,61109,50,71112,49,81154,44,91082,36,10我需要做什么來獲取任何特定 id 的排名值,例如,在我的 PHP 代碼中,如何找到 id 1111 的排名位置(以返回“4”的排名值)?我不得不用鋤頭進一步從結果中提取值。我是否需要以某種方式保存它們,或者我可以進一步擴展 MySQL 查詢嗎?
1 回答

寶慕林4294392
TA貢獻2021條經驗 獲得超8個贊
您可以使用以下任一解決方案:
您需要使用子查詢來維護排名位置。
這將為您提供排名為 4 的結果:
SELECT *
FROM
(
SELECT id, stats,
@curRank := @curRank + 1 AS rank
FROM statistics.web_stats p, (SELECT @curRank := 0) r
ORDER BY stats DESC
) AS stat
WHERE rank = 4;
您甚至可以使用LIMIT OFFSET進行查詢,因為它們已經按順序排列:
SELECT id, stats,
@curRank := @curRank + 1 AS rank
FROM statistics.web_stats p, (SELECT @curRank := 0) r
ORDER BY stats DESC
LIMIT 4, 1
- 1 回答
- 0 關注
- 166 瀏覽
添加回答
舉報
0/150
提交
取消