1
在過去的兩天裏,我一直在問Mysql中的等級查詢。到目前爲止,我有工作查詢如何優化我的查詢(等級查詢)?
- 查詢表中的所有行並按順序排列。
- 查詢只有一排,其排名
這裏是從昨晚
我的問題的鏈接正如你可能已經注意到,btilly的查詢是非常快。
這裏是一個基於btilly的查詢獲取一行的排名的查詢。
set @points = -1;
set @num = 0;
select * from (
SELECT id
, points
, @num := if(@points = points, @num, @num + 1) as point_rank
, @points := points as dummy
FROM points
ORDER BY points desc, id asc
) as test where test.id = 3
上面的查詢是使用子查詢..我......我擔心的是性能。
有沒有其他更快的查詢,我可以使用?
表點
id points
1 50
2 50
3 40
4 30
5 30
6 20
//感謝您的輸入。我剛添加了6行的示例表。你的查詢對於id#1,2的工作正常,但是我得到了id#3的不同結果。我期待2作爲結果,但我得到3.我如何得到2,而不是3爲id#3?我得到3是因爲有兩個記錄(#1和#2)的值高於#3。 – Moon 2011-03-19 09:10:22
@Moon:修改'COUNT(*)'到'COUNT(DISTINCT points)'。查看更新。 – 2011-03-19 09:13:40
//最後!!!我真的很感謝你的幫助!週末愉快! (我會在你的幫助下!) – Moon 2011-03-19 09:15:20