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