我正在嘗試獲取 MySQL SELECT 語句的排名值(MySQL 不是我太熟悉的東西)。此查詢以正確的順序(通過更多的統(tǒng)計數(shù)據(jù))為我提供了我正在尋找的正確結(jié)果,但我需要從結(jié)果中獲取特定值。SELECT id, stats,@curRank := @curRank + 1 AS rankFROM statistics.web_stats p, (SELECT @curRank := 0) r ORDER BY stats DESC;給了我這個預(yù)期的結(jié)果: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”的排名值)?我不得不用鋤頭進(jìn)一步從結(jié)果中提取值。我是否需要以某種方式保存它們,或者我可以進(jìn)一步擴(kuò)展 MySQL 查詢嗎?
1 回答

寶慕林4294392
TA貢獻(xiàn)2021條經(jīng)驗 獲得超8個贊
您可以使用以下任一解決方案:
您需要使用子查詢來維護(hù)排名位置。
這將為您提供排名為 4 的結(jié)果:
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進(jìn)行查詢,因為它們已經(jīng)按順序排列:
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 關(guān)注
- 161 瀏覽
添加回答
舉報
0/150
提交
取消